Perl: Standardausgabe in Datei umlenken
Ich hänge momentan bei folgender Aufgabe fest: Ich soll ein Perl-Programm schreiben, das seine Standardausgabe in eine Datei umlenkt.
Kann mir jemand einen Tipp geben, wie ich dabei vorgehen kann?
3 Antworten
Wenn print ohne Dateihandle aufgerufen wird, wird standardmaessig STDOUT als Ausgabe genutzt. Die Aufgabe war "Ich soll ein Perl-Programm schreiben, das seine Standardausgabe in eine Datei umlenkt.".
Also...
Die Standardausgabe, auf die print standardmaessig schreibt, laesst sich ganz einfach mit select HANDLE; aendern.
Beispiel:
open LOG, ">>time().log";
select LOG;
print "Ich bin eine Zeile in der Logdatei."; # <- das wird nach LOG geschrieben, nicht nach STDOUT.
Zuruecksetzen laesst sich die Standardausgabe genauso, mit "select STDOUT;".
Die Antwort kam jetzt zwaer etwas spaet, aber besser spaet, als nie..
üblicherweise kann man das beim Aufruf machen:
meinProg.pl > Datei.txt
Pssst, kannst auch mit exec() ein PL Skript schreiben das die Ausgabe deines eigentlichen Scripts mit > umleitet ohne das es jemand merkt :D
Du kannst einen Dateihandle definieren und dann den Befehl print mit diesem Handle verknüpfen:
open(DATEI, ">/home/joe/datei.txt") || "Datei nicht gefunden"; print DATEI $Daten; close(DATEI);
weitere Optionen: http://de.selfhtml.org/perl/funktionen/einausgabe.htm#print und ff
Danke für die Antwort. Leider ist dies nicht die gewünschte Lösung. Die Umleitung soll bereits ins Programm eingebaut werden, so dass es seine Ausgabe selbstständig umlenkt.