Ich versuche, das Perl-Modul IPC :: Run3 zu testen, aber zu überprüfen, ob ein Befehl fehlgeschlagen oder erfolgreich ist.
Ich weiß, dass IPC :: Run3 einen Exit-Code ausgibt, wenn etwas mit seinen Argumenten falsch ist, aber was ist, wenn die Argumente in Ordnung sind, aber der Befehl nicht existiert? Wie kann ich das folgende Beispiel testen?So testen Sie den Exit-Status von IPC :: Run3
Nachdem ein Unterprogramm Run3 ruft
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";
}
}
wenn Befehl $cmds[0]
unten ausgeführt wird (der ls
Befehl von * nix-Systemen) druckt OK
wie erwartet, aber mit dem Befehl $cmds[1]
es sagt nur No such file or directory at ./testrun3.pl line 18
. Mit einem Test auf den Exit-Code möchte ich stattdessen Something is wrong
drucken.
#!/usr/bin/perl
use warnings;
use strict;
use IPC::Run3;
my @cmds = qw(ls silly);
runRun3($cmds[0]);
runRun3($cmds[1]);
Oder was wäre die beste Alternative zu IPC :: Run3 in solchen Fällen? Dies ist nur eine zu starke Vereinfachung des Prozesses, aber letztendlich möchte ich STDERR und STDOUT für komplexere Situationen erfassen.
Danke.
@ikegami Oh, sicher, viel besser, alles (und richtig) zu zeigen. Vielen Dank. – zdim