加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何读取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的循环之前添加此行.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读