2010-09-17 53 views

回答

2

capture()命令?或者capturex()。

從鏈接引用:

異常處理

在命令返回意外狀態,對運行和捕捉將拋出一個異常,如果不抓住會終止你的程序有一個的情況下錯誤。

捕獲異常很簡單:

eval { 
    run("cat *.txt"); 
}; 

if ([email protected]) { 
    print "Something went wrong - [email protected]\n"; 
} 

請參閱下面的診斷部分的更多細節。

+0

謝謝,但'capture'等同於'runx'儘可能的執行階段(SOCU說,'catpure'就像反引號,而'run'就像'system')?我可以打印僅在失敗時捕獲的內容嗎? – 2010-09-17 08:17:07

+0

查看我剛剛編輯的內容。 – colithium 2010-09-17 08:24:15

+0

謝謝。顯然'capturex'默認情況下完全符合我的要求:如果一切順利,它是無聲的,如果發生錯誤(即意外返回值等),它會死掉,但首先打印命令的輸出以及它自己的消息。大! – 2010-09-17 11:49:20

0

如果一個模塊的行爲非常惡劣並直接打印到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"); 
相關問題