如何读取Perl中外部命令的错误输出?
发布时间:2020-12-15 21:22:52 所属栏目:大数据 来源:网络整理
导读:作为更大的Perl程序的一部分,我正在检查文件夹中的输入文件的diff命令的输出,以引用文件,其中空白输出(匹配)是传递结果,并且diff的任何输出都是失败的结果. 问题是,如果目标文件夹对预期文件的数量较短,则异常diff throws不会作为输出,创建false pass. 输出
作为更大的Perl程序的一部分,我正在检查文件夹中的输入文件的diff命令的输出,以引用文件,其中空白输出(匹配)是传递结果,并且diff的任何输出都是失败的结果.
问题是,如果目标文件夹对预期文件的数量较短,则异常diff throws不会作为输出,创建false pass. 输出示例: diff: /testfolder/Test-02/test-output.2: No such file or directory Test-01:PASS Test-02:PASS 代码如此: $command = "(diff call on 2 files)"; my @output = `$command`; print "Test-02: "; $toPrint = "PASS"; foreach my $x (@output) { if ($x =~ /./) { $toPrint = "FAIL"; } } 如果diff调用有任何输出,这是一个快速的黑客工作.有没有办法检查在反引号中调用的命令抛出的异常? 解决方法
程序本身不能抛出“异常”,但它们可以返回非零错误代码.您可以使用$?:在Perl中检查使用backticks或system()运行的程序的错误代码:
$toPrint = "FAIL" if $?; (在测试@output的循环之前添加此行.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |