Wie leite ich STDOUT etc. um?

Inhalt:

Wenn man mal zum beispiel sehr viel an eine Datei schreiben will, kann man einfach das Standardoutputhandle STDOUT an die Datei umleiten. Hier wird beschrieben wie.

Standard Dateihandles wie STDOUT umleiten

Wenn man ein Perlscript schreibt, werden zu beginn automatisch die Handle STDOUT(Standardoutput), STDERR(Standard Error) und STDIN(Standardinput) geöffnet. Wobei alle 3 Normalerweise die Konsole sind, von der das Programm aufgerufen wurde. Hier ein kleines beispielscript, wie man das ändern kann:

 #!/usr/bin/perl
 
 use strict;

 use warnings;
 #Pragmas einbinden
 
 open(STDOUTFAKE, ">&STDOUT");
 open(STDOUT, ">stdout.txt") || die "Kann stdout.txt nicht öffnen!";
 #STDOUT nach stdout.txt leiten und STDOUTFAKE an die Konsole
 
 print "STDOUT ist nun nicht mehr die Konsole...\n";
 print STDOUTFAKE "Das kommt nun auf die Konsole...\n";
 
 #STDOUT wieder herstellen
 open(STDOUT, ">&STDOUTFAKE");
 print "Nun ist STDOUT wieder auf der Konsole...\n";

Es ist auch ganz nützlich STDERR an eine datei zu binden, um logdateien zu erzeugen und Programme im Hintergrunf ausführen zu lassen. Wenn man diese Handles komplett weghaben will, kann man sie unter Linux auch an /dev/null binden. Dann bekommt man von der Ausgabe/Eingabe üüberhaupt nichts mit.

Ergänzungen, Kommentare

Kommentare werden am besten in folgender Form vorgenommen, damit sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):
---+++ Main.??? - 14 Jul 2003 - Betreff

UtilFaqSubForm edit

Titel Wie leite ich STDOUT etc. um?
Autor
Bereich FaqEinUndAusgabe
Topic revision: 2005-07-18, IngoW
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.