Nehmen wir an, ich möchte ein externes Programm aus meinem Skript mit Backticks ausführen und gleichzeitig STDOUT und STDERR in zwei verschiedenen Variablen erfassen. Wie kann ich das machen? Vorläufig, wenn ich dieses Skript ausführe ...
%Vor%... wenn es keinen Fehler gibt, funktioniert alles gut, aber wenn der Befehl einen Fehler auslöst, wird dieser Fehler in der Befehlszeile ausgegeben und ich möchte nicht, dass das passiert. Ich möchte den Fehler auch erfassen. Nichts muss auf dem Bildschirm gedruckt werden. Irgendwelche Ideen?
In der Perl-FAQ haben Sie verschiedene Möglichkeiten, wie Sie vorgehen möchten:
Sie müssen nicht den ganzen Weg zu open3
gehen, was IIRC nur für das Lesen und Schreiben eines externen Befehls ist, und selbst dann gibt es andere Methoden.
Für Ihr Problem schlage ich vor, Capture::Tiny
zu verwenden, das STDOUT und STDERR von allem erfassen (oder sogar abzweigen) kann in seinem Block laufen. Zum Beispiel für Ihre Frage:
Für ein anderes Beispiel betrachte diesen funktionierenden Code:
%Vor%was mir gerade gegeben hat:
%Vor%Die einzige Möglichkeit, dies mit Backticks zu tun, ist das Umleiten in eine Datei innerhalb des Shell-Befehls:
%Vor%Wenn Sie die STDERR in Ihrem Skript erfassen möchten, benötigen Sie IPC :: Open3 statt Backticks
Tags und Links command-line perl backticks