Wie wechsle ich den Druck auf STDOUT/STDERR dynamisch in Perl?
Ich bin gespannt, ob ich Umschalten kann zwischen dem Druck auf STDOUT oder STDERR basierend auf einem Wert-oder inline-Ausdruck (ohne die Verwendung einer if-Anweisung).
print ($someFlag ? STDOUT : STDERR) "hello world!"
Offensichtlich, dass die syntax nicht funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, das wird tun, was Sie wollen:
Ein ähnliches Beispiel kann man in der Dokumentation für drucken. Verwenden typeglobs so, dass es unter
use strict
.Andere Strategie definieren Sie Ihre eigenen Druck-Funktion verhält sich unterschiedlich, je nach dem Wert von
$someFlag
.Tun, Sie brauchen, um zu bewerten für jeden Aufruf
print
?Wenn nicht, würde diese Arbeit für Sie:
Einen Mechanismus zu 'wählen', die output descriptor (file-Kanal).
ich vermute, das ist jetzt veraltet, aber.Ich wickeln Sie diese Art der Sache in einer Methode, die zurückgibt, die das entsprechende filehandle:
Möchten Sie vielleicht zu prüfen, wie IO::Interaktive.
Jedoch, wenn Sie dies tun, für die Anmeldung, ich empfehle Log::Log4perl da können Sie nicht nur ändern, wo der Ausgang geht, kann aber senden Sie die Ausgabe an mehreren Orten, Prioritäten für die Nachricht, und vieles mehr. Und, Sie können alles ändern, ohne änderung der Quelle.