2014-05-06 79 views
0

我正在编写一个perl代码以将代码从repro上传到目录(在我的情况下为jsvn update . shell命令)。我希望在签入进行时,结果应该显示在标准输出中('jsvn update。')显示出来,但如果出现任何错误和错误,我必须继续观察显示器,我必须给出清理并再次启动该过程。)我为此编写了一个程序,但它不会将输出显示在屏幕上。光标保持闪烁,我知道该过程正在进行背景,但我希望结果也显示到标准输出。请帮帮我。在执行命令时将输出发送到perl中的STDOUT

#!usr/bin/perl 

use Capture::Tiny qw/tee/; 


sub code(){ 

`jsvn cleanup .`; 

($stdout, $stderr, @result) = tee { system("jsvn update .") }; 

print "@result\n"; 

} 

code(); 

if($stderr){ 

code(); 

}else{ 
print "The checkout has been done successfully \n"; 

exit; 
} 
+0

使用'IPC ::系统::简单QW [捕获]'来代替:'我的@结果= capture('jsvn update。');' –

+0

但是这个jsvn有很多退出值,我要弄清楚,大概在50左右。所以我希望在出现任何错误的情况下,整个过程开始again.IPC :: System :: Simple模块需要预先定义错误代码来处理这些错误或程序死亡。 – May

回答

0

如果你想使用IPC::System::Simple您可以通过$EXITVAL抢出口值做这样的事情:

... 
use IPC::System::Simple qw[capture $EXITVAL]; 
use feature qw[switch]; 
... 
my @result = capture('jsvn update .'); 

given ($EXITVAL) { 
    when (0) { 
    print "Ok\n"; 
    } 

    when (1) { 

    } 
    .. 
    when (N) { 

    } 
} 
... 
+0

谢谢Mr.Filippo :)是的,这个.pm有帮助...现在写代码捕获退出值。再次感谢您的时间。 – May

相关问题