Thread Datei einlesen und ausgeben (10 answers)
Opened by ITobiI at 2015-10-10 11:55

Raubtier
 2015-10-10 12:19
#182559 #182559
User since
2012-05-04
1077 Artikel
BenutzerIn
[default_avatar]
Dieses Vorgehen ist, ob Text-Datei oder nicht, sowieso schlecht.

Es liest sich so: lies die Datei, teile sie in Zeilen auf und dann füge die Zeilen wieder zusammen. Da kann man sich das Aufteilen in Zeilen und anschließende Zusammenfügen auch gleich sparen.

Wenn die ganze Datei auf einmal in ein Skalar gelesen werden soll, dann nimm zum Beispiel read_file aus CPAN:File::Slurp oder verwende Code wie diesen hier:

Code (perl): (dl )
1
2
3
4
5
my $daten = do {
    open(my $FH, "<", "dateiname") or die $!;
    local $/;
    <>
};


Merke:
- Dateihandeles mit $ beginnen!
- close passiert automatisch, wenn das Dateihandle aus dem Scope geht
- mit
Code (perl): (dl )
local $/
stellst du das Aufsplitten in Zeilen aus, siehe Perldoc:perlvar.

Obiger Code gilt für Textdateien. Wenn du Binärdateien hast, dann musst du das Perl mitteilen. Siehe Perldoc:perlfunc binmode. Das IO-Layer kannst du auch gleich beim Öffnen setzen, siehe Perldoc:perlfunc open. Also dann
Code (perl): (dl )
open my $FH, "<:raw", $dateiname
bzw.
Code (perl): (dl )
read_file($dateiname, binmode => ':raw');
mit CPAN:File::Slurp.

Eine weitere Bemerkung habe ich noch: warum fangen all deine Pfade mit /root/ an? Warum benutzt du nicht einen normalen User-Account?

View full thread Datei einlesen und ausgeben