执行命令时,在perl中将输出发送到STDOUT

时间:2014-05-06 09:12:36

标签: perl io stdout perl-module

我正在编写一个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;
}

1 个答案:

答案 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) {

  }
}
 ...