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

前端之家收集整理的这篇文章主要介绍了如何读取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的循环之前添加此行.)

猜你在找的Perl相关文章