Thread NUR letzte Zeile in einem Textdokument auswerten (8 answers)
Opened by oruebe at 2004-12-23 19:09

esskar
 2004-12-23 21:35
#3862 #3862
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
@jemand:
kostet zu viel speicher...

mein vorschlag, ohne (nicht.standard) modul

Code: (dl )
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-->

View full thread NUR letzte Zeile in einem Textdokument auswerten