Perl: Standardausgabe in Datei umlenken

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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


Cuchulainn 
Fragesteller
 04.02.2008, 15:01

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.

0
Typhus  24.05.2016, 15:30
@Cuchulainn

Pssst, kannst auch mit exec() ein PL Skript schreiben das die Ausgabe deines eigentlichen Scripts mit > umleitet ohne das es jemand merkt :D

0

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