Thread Letzte 10 Zeilen einer Textdatei ausgeben (73 answers)
Opened by TrioxX at 2006-12-03 12:20

topeg
 2006-12-06 11:11
#9258 #9258
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
wenn es ein cgi-script ist wäre s gut Fehlermeldungen auf den browser aus zu geben. Wenn "CGI" installiert solltest du diese zeile zu anfang Setzen:
Code: (dl )
use CGI::Carp qw/fatalsToBrowser/;


Wes halb mein script bei dir nicht funktioniert ist klar, die Datei "./read_backwards_test.txt" existiert nicht. Die solltest du ruhig mal anlegen, und mit Werten füllen. ungefähr so:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
01te Zeile
02te Zeile
03te Zeile
04te Zeile
05te Zeile
06te Zeile
07te Zeile
08te Zeile
09te Zeile
10te Zeile
11te Zeile
12te Zeile

Dann sollte es funktionieren. Einfach kopieren bringts nicht immer. :-)

Edit:
Mein Script für dich angepasst:
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
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use CGI::Carp qw/fatalsToBrowser/;

my $file = './Variables/messages.txt';

##################
# Liest rückwärts vom Dateiende
# aus einem Dateihandle
# die angebene Anzahl von Zeilen.
# übergebene Werte:
# 1. Das Filehandle
# 2. Die Anzahl der Zeilen
# Liefert ein Array mit den gelesenen Zeilen zurück.
#
# Der Identifikator für das Zeilenende
# wird aus $/ gelesen.
sub read_back($$)
##################
{
my ($fh,$lines)=@_;
my $line_cnt=0;
my $data='';

seek($fh,0,02);
my $pos=tell($fh);

while($line_cnt < $lines and $pos > 0)
{
$pos--;
seek($fh,$pos,00);
my $bite=getc($fh);
$line_cnt++ if($bite eq $/);
}
return <$fh>;
}

open(my $fh, '<', $file) or die "$!\n";
my @lines = read_back($fh,5);
close($fh);

print "Content-type: text/plain \n\n";
print 'Zeilen = '.@lines.":\n".join('',@lines)."\n";


EDIT: "Content-type" vergessen... :-(\n\n

<!--EDIT|topeg|1165398054-->

View full thread Letzte 10 Zeilen einer Textdatei ausgeben