Wie kann ich die STDERR in Perl loswerden?

7

Ich verwende einige Systembefehle in Perl.

Im folgenden Fall wurde ich wie folgt ausgegeben:

%Vor%

Mein Code:

%Vor%

Ich möchte in der Ausgabe Folgendes nicht sehen, auch wenn keine Dateien vorhanden sind.

%Vor%     
Sunny 25.02.2011, 17:30
quelle

7 Antworten

5

Sie können stderr redirection in Ihren subshell-Befehlen hinzufügen:

%Vor%     
Carl Norum 25.02.2011, 17:32
quelle
13

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.

    
DVK 25.02.2011 17:42
quelle
5

Leiten Sie STDERR an das Null-Gerät um:

%Vor%     
shawnhcorey 25.02.2011 18:48
quelle
4

Sehen Sie sich perlfaq8 an . Wenn es Ihnen egal ist, ob es STDOUT oder STDERR ist, können Sie beide zu STDOUT umgeleitet werden.

%Vor%

In Ihrem Fall möchten Sie wahrscheinlich nur STDERR loswerden:

%Vor%

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%     
Leonardo Herrera 25.02.2011 17:58
quelle
2

Erstellen Sie einen neuen Warn-Hook, machen Sie dann etwas mit der Nachricht, speichern Sie sie, ignorieren Sie sie usw. ...

%Vor%     
Joel Berger 22.04.2011 04:56
quelle
1

Sie können stderr auf /dev/null wie:

umleiten %Vor%     
codaddict 25.02.2011 17:33
quelle
-1

Subshells erben das STDERR des Elterns. Wenn Sie dies also auf globaler Ebene tun möchten, können Sie dies tun:

%Vor%     
Authority 25.02.2011 17:44
quelle

Tags und Links