Sie können stderr
redirection in Ihren subshell-Befehlen hinzufügen:
Während die anderen Antworten bezüglich der genauen technischen Frage, die Sie gestellt haben, korrekt sind, sollten Sie auch nicht in Perl schreiben, was eigentlich ein Shell-Skript ist.
Sie sollten die nativen Methoden von Perl zum Abrufen von Dateilisten verwenden (z. B. glob()
oder File::Find
), anstatt einen zurückgesuchten ls
aufzurufen.
Sehen Sie sich perlfaq8 an . Wenn es Ihnen egal ist, ob es STDOUT
oder STDERR
ist, können Sie beide zu STDOUT
umgeleitet werden.
In Ihrem Fall möchten Sie wahrscheinlich nur STDERR
loswerden:
Ich stimme jedoch zu DVKs Antwort . Die Verwendung eines externen Befehls, um eine Liste von Dateien zu erhalten, erscheint einfach albern. Sie sollten Datei :: Suchen verwenden. Auf diese Weise können Sie Perls normale Fehlerbehandlung verwenden, falls etwas fehlschlägt.
%Vor%Erstellen Sie einen neuen Warn-Hook, machen Sie dann etwas mit der Nachricht, speichern Sie sie, ignorieren Sie sie usw. ...
%Vor%Tags und Links perl redirect stderr system-calls