我正在使用IPC::System::Simple:runx
執行系統命令並死於意外的返回值。問題是命令輸出被打印到shell。如何在使用Perl的`IPC :: System :: Simple:runx`時避免打印到標準輸出?
- 如何避免打印此 輸出?
- 如何避免打印此輸出 ,但將其變爲perl變量?
UPDATE
3)我怎麼能當且僅當執行失敗打印此輸出?
我正在使用IPC::System::Simple:runx
執行系統命令並死於意外的返回值。問題是命令輸出被打印到shell。如何在使用Perl的`IPC :: System :: Simple:runx`時避免打印到標準輸出?
UPDATE
3)我怎麼能當且僅當執行失敗打印此輸出?
capture()命令?或者capturex()。
從鏈接引用:
異常處理
在命令返回意外狀態,對運行和捕捉將拋出一個異常,如果不抓住會終止你的程序有一個的情況下錯誤。
捕獲異常很簡單:
eval {
run("cat *.txt");
};
if ([email protected]) {
print "Something went wrong - [email protected]\n";
}
請參閱下面的診斷部分的更多細節。
如果一個模塊的行爲非常惡劣並直接打印到STDOUT,您總是可以將STDOUT重定向到其他東西。這種黑客,但一些模塊需要它。
# Save STDOUT for restore later
open(OLD_STDOUT, ">>&STDOUT");
open(STDOUT, ">/some/file/or/dev/null");
# call your module
# Restore STDOUT
open(STDOUT, ">>&OLD_STDOUT");
謝謝,但'capture'等同於'runx'儘可能的執行階段(SOCU說,'catpure'就像反引號,而'run'就像'system')?我可以打印僅在失敗時捕獲的內容嗎? – 2010-09-17 08:17:07
查看我剛剛編輯的內容。 – colithium 2010-09-17 08:24:15
謝謝。顯然'capturex'默認情況下完全符合我的要求:如果一切順利,它是無聲的,如果發生錯誤(即意外返回值等),它會死掉,但首先打印命令的輸出以及它自己的消息。大! – 2010-09-17 11:49:20