我正在使用IPC::System::Simple:runx
来执行系统命令并在意外的返回值上死掉。问题是命令输出打印到shell。
更新
3)如果执行失败,如何打印此输出?
答案 0 :(得分:2)
capture()命令?或者capturex()。
引自链接:
异常处理
如果命令返回意外状态,则run和capture都会抛出异常,如果没有捕获,则会终止程序并显示错误。
捕获异常非常简单:
eval {
run("cat *.txt");
};
if ($@) {
print "Something went wrong - $@\n";
}
有关详细信息,请参阅下面的诊断部分。
答案 1 :(得分: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");