while( filehandle ) { ausgeben } und in skalar einlesen
Ark
- perl
-1 Cheatah2 Christian Kruse1 Struppi
hiho
Keine Ahnung ob in diesem HTML Forum wer perl kann aber versuchen wirs mal!
Textdateien lesen und ausgeben tat ich immer so:
open(DATEI, "<text.txt") || die "nix da";
flock(DATEI, 2);
my @inhalt = <DATEI>;
flock(DATEI, 8);
close(DATEI);
for(@inhalt) { print $_; }
Nun muss also zuerst @inhalt gefüllt werden,
und dann nochmals @inhalt durchgegangen werden um es auszugeben.
1. Frage
Gesucht wird nach der Lösung mit welcher man
während der geöffneten textdatei solange sie sogar noch
unter 'flock' steht ausgegeben werden kann.
Das war irgendwas mit while(FILEHANDLE) aber ich bekomms nicht mehr hin.
2. Frage:
Wie kann man eine Textdatei welche mehrere Zeilen enthält
in einen scalar einlesen?
my @inhalt = <DATEI>; tut es in einen @array einlesen.
Der Versuch my $my_scalar = <DATEI>; gab nur die erste Zeile zurück.
Dangge :P
Ark (bzw. HexA für die Leute vom irc)
Hi,
Das war irgendwas mit while(FILEHANDLE) aber ich bekomms nicht mehr hin.
komisch, in Deinem Posting hast Du bereits zwei Ansätze genannt.
Wie kann man eine Textdatei welche mehrere Zeilen enthält
in einen scalar einlesen?
Durch Setzen von $/ auf einen hinreichend günstigen Wert. Siehe perldoc perlvar.
Cheatah
你好 Ark,
- Frage
Gesucht wird nach der Lösung mit welcher man
während der geöffneten textdatei solange sie sogar noch
unter 'flock' steht ausgegeben werden kann.
Das war irgendwas mit while(FILEHANDLE) aber ich bekomms nicht mehr hin.
Du meinst vermutlich
print while <HANDLE>;
- Frage:
Wie kann man eine Textdatei welche mehrere Zeilen enthält
in einen scalar einlesen?
my @inhalt = <DATEI>; tut es in einen @array einlesen.
Der Versuch my $my_scalar = <DATEI>; gab nur die erste Zeile zurück.
Du musst den “Record Seperator” umsetzen:
my $scalar = '';
{
local $/;
$scalar = <HANDLE>;
}
print $scalar;
再见,
CK
Ergänzend noch:
flock(DATEI, 8);
close(DATEI);
Das sollte man ncht tun. Denn close gibt die Datei explizit frei und unter ganz schlechten Umständen greift ein paraleller Prozeß genau zwichen flock und close zu und dann war das ganze gelocke für die Katz.
Struppi.