Leser: 26
1
2
3
4
5
6
7
open(IN,"<$path")|| print "File konnte nicht geöffnet werden: $!";
while(<IN>)
{
@file_rows = <IN>;
print $file_rows[9];
print $file_rows[10];
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#!/usr/bin/perl -w use strict; use warnings; use diagnostics; my $path = 'test.txt'; if (open my $file,"<$path") { my @file_rows = <$file>; if (scalar @file_rows) { print $file_rows[9]; print $file_rows[10]; } else { die "Datei ist leer\n" } } else { die $! }
1 2 3 4 5
use strict; use warnings; open my $fh, "<", $path or die "Konnte $path nicht öffnen: $!"; my @lines = <$fh>; # liest alle zeilen auf einmal print @lines[9, 10]; # array slice der elemente 9 und 10
2010-10-11T11:21:52 pqwarum bei dir die erste zeile "ignoriert" wird, wurde dir ja schon gesagt.
my @lines = <$fh>; # liest alle zeilen auf einmal
1 2 3 4 5 6 7 8 9 10
use strict; use warnings; open my $fh, "<", $path or die "Konnte $path nicht öffnen: $!"; while(my $line=<$fh>) { print $line if($.==9); print $line if($.==10); last if($.>10); }
Guest werCode (perl): (dl )1 2 3 4 5 6 7while(my $line=<$fh>) { print $line if($.==9); print $line if($.==10); last if($.>10); }
2010-10-11T15:47:15 pernox77Kann bzw. sollte ich das noch optimieren? Ich brauche wirklich nur diese beiden Zeilen und die Dateien werden jeweils immer ca. 20.000 Zeilen haben.
2010-10-11T17:55:13 biancaMan kann mittels seek() auch den Zeiger einer geöffneten Datei setzen ......
Und mit sysread() kann man obendrein auch eine bestimmte Anzahl Zeichen einlesen. Je nach dem ist das vielleicht auch sinnvoll für Deine Anwendung. Weiß ja nicht, ob der Zeilentrenner unbedingt das nonplusultra in Deiner Anwendung ist.
1
2
3
4
use v6;
my ($tenth, $eleventh) = open('README').lines.[9, 10];
say $tenth;
say $eleventh;