【发布时间】:2016-11-24 01:52:40
【问题描述】:
我正在尝试测试 Perl 模块 IPC::Run3,但难以检查命令是失败还是成功。
我知道如果 IPC::Run3 的参数有问题,它会发出退出代码,但是如果参数正常但命令不存在怎么办?如何测试以下示例?
有一个子程序来调用 Run3
sub runRun3 {
my $cmd = shift;
my ($stdout, $stderr);
run3($cmd, \undef, \$stdout, \$stderr);
# if( $? == -1 ) {
if (! $stdout and ! $stderr) {
die "Something is wrong";
} else {
print "OK \n";
}
}
当执行下面的命令$cmds[0](*nix 系统的ls 命令)时,它会按预期打印OK,但使用命令$cmds[1] 它只会显示No such file or directory at ./testrun3.pl line 18。
通过对退出代码的测试,我希望它改为打印 Something is wrong。
#!/usr/bin/perl
use warnings;
use strict;
use IPC::Run3;
my @cmds = qw(ls silly);
runRun3($cmds[0]);
runRun3($cmds[1]);
或者在这种情况下,IPC::Run3 的最佳替代方案是什么?这只是对过程的过度简化,但最终我想为更复杂的情况捕获 STDERR 和 STDOUT。
谢谢。
【问题讨论】:
标签: perl exit-code perl-ipc-run