微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何读取Perl中外部命令的错误输出?

作为更大的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的循环之前添加此行.)

原文地址:https://www.jb51.cc/Perl/172532.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐