@jemand:
kostet zu viel speicher...
mein vorschlag, ohne (nicht.standard) modul
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use Fcntl;
sub get_lastline_of_file
{
my ($file) = @_;
my $fh;
return undef unless open($fh, "< $file");
binmode $fh;
seek($fh, 0, SEEK_END);
my $size = tell($fh);
my $rest = $size;
my $step = 256;
my $retval = "";
while($rest > 0)
{
my $buffer;
my $len = $step > $size ? $size : $step;
seek($fh, -$len, SEEK_CUR);
unless(read($fh, $buffer, $len))
{
close $fh;
die "Read failed unexpected.";
}
my $pos = rindex($buffer, "\n");
while($pos > -1)
{
if(($pos != -1 + length $buffer) or ($rest != $size))
{
return substr($buffer, $pos+1).$retval;
}
$pos = rindex($buffer, "\n", $pos);
}
$retval = $buffer.$retval;
$rest -= $len;
}
return $retval;
}
hab es jetzt nicht getestet; aber könnte so gehen!\n\n
<!--EDIT|esskar|1103830645-->