2010-04-27 99 views
0

我想从我的Perl脚本运行Java程序。我想避免在Java中使用System.exit(1)和System.exit(-1)命令。然而,我从Java打印到STDOUT和STDERR。在我的Perl脚本中,我正在阅读Java的stdout并逐行输出。如果我看到stderr,如何打印stderr并失败?这是我到目前为止有:在Perl中处理Java标准输出和标准错误

my $java_command = ...; 
open(DATA, ">$java_command"); 
while (<DATA>) { 
    chomp($_); 
    .... 
    .... 
} 

回答

1

这已经在这里讨论:How can I capture STDERR from an external command?

所以,你可以这样做:

open (DATA, "($java_command_with_args | sed 's/^/STDOUT:/') 2>&1 |"); 
while (<DATA>) { 
    if (s/^STDOUT://) { 
     print "line from stdout: ", $_; 
    } else { 

     print "line from stderr: ", $_; 
     die("Saw something on stderr"); 
    } 
} 
相关问题