2010-04-27 100 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"); 
    } 
} 
相關問題