Я пытаюсь протестировать модуль Perl IPC :: Run3, но с трудностью проверить, была ли команда неудачной или успешной.
Я знаю, что 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 для более сложных ситуаций.
Спасибо.
@ikegami О, конечно, гораздо лучше показать все (и правильно). Спасибо. – zdim