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