Get return-code und die Ausgabe von Befehl in Perl

Bin ich zu schreiben versucht, ein Dienstprogramm, das gehen durch eine Datei würde wie folgt Aussehen:

# Directory | file name | action | # of days without modification to the file for the command to take action
/work/test/|a*|delete|1
/work/test/|b*|compress|0
/work/test/|c*|compress|1

Mein Skript über das Datei-Entscheidung, wenn, zum Beispiel, gibt es die Dateien unter /work/test/, die beginnen mit "a", die sich nicht geändert haben in den letzten 1 Tagen, und wenn so, es würde Sie zu löschen.

Dafür verwende ich den Befehl "suchen". Beispiel:

my $command = "find " . $values[0] . $values[1] . " -mtime +" . $values[3] . " -delete ;\n";
system ($command);

Aber, ich wurde gebeten, zum abrufen der return code für jeden Schritt, um zu überprüfen, dass jeder Schritt gut geklappt hat.

Nun, ich weiß, dass system() liefert den return-code, und die backticks return die Ausgabe. Aber, wie bekomme ich beides?

  • Ich würde File::Find, Datei::Finder, File::Find::Rule, oder ähnlich, statt find. Das wird Ihnen erlauben, zu überprüfen, den Erfolg jedes einzelnen unlink anstatt der Erfolg des gesamten find Befehl.
InformationsquelleAutor coconut | 2015-10-01
Schreibe einen Kommentar