Hallo Bernd!
open (FLAT, „flatfile.txt“);
@inhalt=;
foreach $zeile (@inhalt)
{…}
so läufts dagegen:
open (FLAT, „flatfile.txt“);
while ($zeile=)
bei der foreach-variante ist nach 25 einträgen
schluss- sieht zufällig jemand einen nachvollziehbaren grund
dafür (oder ist das der elektrolurch)?
Die Varianten müssten sich eigentlich gleich verhalten.
Der Zeileneingabeoperator gibt so lange Zeilen zurück,
bis das Dateiende erreicht ist. Das wird unter Windows mit dem
Dateiendezeichen STRG-Z (=Strg-Taste halten und Z drücken) simuliert.
Hast Du vielleicht so ein Zeichen in der Textdatei, welches ein
vorzeitiges Ende verursacht?
Hier ein Beispiel für das vorzeitige Abbrechen der Dateileseoperation:
Zuerst die präparierte Datei:
Z1: asdas
Z2: asdfk
Z3: STRG-Z
Z4: Du siehst mich nicht
Test-Skript:
#!c:/Perl/bin/perl -w --
use strict;
my $datei = "eof.txt";
print "foreach-Variante:\n";
open (FLAT, $datei);
#binmode FLAT;
my @inhalt=;
foreach my $zeile (@inhalt){
print $zeile;
}
close(FLAT);
print "\nwhile-Variante:\n";
open (FLAT, $datei);
#binmode FLAT;
while (my $zeile=){
print $zeile;
}
close(FLAT);
Unter Windows wird die Zeile 4 bei beiden(!) Varianten nicht
ausgegeben. Das kannst Du vermeiden, indem Du binmode verwendest.
An welcher Stelle hört denn das Einlesen auf? Das müsste
doch immer die gleiche sein, oder? Veränderst Du die Zeilen
vielleicht vor der Schleife, z.B. per chomp oder chop?
Soviel zu meinen spontanen Ideen zum Problem …
Gruß,
-Andreas.