我正在编写一个perl代码,用于将代码从repro上传到目录(jsvn update .
在我的情况下是一个shell命令)。我希望在检查过程中,结果应显示在stdout('jsvn update。'确实显示,但我必须继续查看监视器,以防出现任何错误和错误,我必须给出一个清理并重新开始这个过程。)我为此编写了一个程序,但它没有显示输出到屏幕。光标一直闪烁,我知道进程正在进行背景,但我想将结果也显示给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 :(得分: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) {
}
}
...