16 Stimmen

Wie kann ich die Fehlerausgabe von externen Befehlen in Perl lesen?

Als Teil eines größeren Perl-Programms prüfe ich die Ausgaben von diff Befehle von Eingabedateien in einem Ordner gegen Referenzdateien, wobei eine leere Ausgabe (eine Übereinstimmung) ein positives Ergebnis ist und eine beliebige Ausgabe von diff ein negatives Ergebnis ist.

Das Problem ist, dass die von diff ausgelöste Ausnahme nicht ausgegeben wird, wenn der Zielordner nicht die erwartete Anzahl an Dateien enthält, was zu falschen Durchläufen führt.

Beispiel für die Ausgabe:

diff: /testfolder/Test-02/test-output.2: No such file or directory

Test-01: PASS

Test-02: PASS

Der Code lautet wie folgt:

$command = "(diff call on 2 files)";
my @output = `$command`;
print "Test-02: ";
$toPrint = "PASS";
foreach my $x (@output) {
    if ($x =~ /./) {
        $toPrint = "FAIL";
    }
}

Dies ist eine schnelle Hackerarbeit, die fehlschlägt, wenn es irgendeine Ausgabe von der diff anrufen. Gibt es eine Möglichkeit, auf Ausnahmen zu prüfen, die von dem im Befehl backticks ?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X