2010-09-17 29 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"); 
相关问题