2014-05-06 78 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

相關問題