我正在尝试测试 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]
下面的ls
命令(*nix 系统的命令)时,它会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。
谢谢。