Warum sollte man eine Datei zeilenweise einlesen, wenn man sie doch auf einen Rutsch haben kann (siehe Datei komplett einlesen)?
Antwort: Weil sie vielleicht zu groß ist, oder weil nicht alle Elemente gebraucht werden, sondern nur bestimmte.
Also erstmal der Code:
open (in,"<$datei") || die $!; while (<in>){
# in $_ steht die aktuelle Zeile
} close in;
Also, die Datei wird geöffnet und zeilenweise eingelesen. Im Aktionsteil kann man die nötigen Arbeiten erledigen, und, jetzt kommt überhaupt der Sinn vom Ganzen, wenn das gewünschte Element verarbeitet wurde, kann man das Einlesen abbrechen. Spart möglicherweise viel Laufzeit und schont den Server bzw. Rechner.
Das sieht dann so aus:
open (in,"<$datei") || die $!; while (<in>){
# hier tut man irgentwas
if ($_ eq 'gesuchte Zeile'){
#tuwas last;
}
} close in;
Das last; gibt an, daß die Schleife nicht weiter durchlaufen wird, das Einlesen also abgebrochen wird. In $_ ist übrigens immer die aktuelle Zeile.
Und was man dazu noch sagen sollte:
Manchmal (nicht immer) ist es wünschenswert, daß eine Fehlermeldung ausgegeben wird, wenn die Datei nicht geöffnet werden kann. Wie dies funktioniert, erkläre ich hier.
Verwandter Artikel: Bestimmte Anzahl von Zeilen aus Datei einlesen
Kommentare zum Beitrag "Eine Datei zeilenweise einlesen mit Perl"