Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]851[/thread]

Letzte 10 Zeilen einer Textdatei ausgeben (Seite 4)

Leser: 7


<< |< 1 2 3 4 5 6 7 8 >| >> 74 Einträge, 8 Seiten
renee
 2006-12-06 10:10
#9252 #9252
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hast Du es denn mal mit CGIpan probiert? Wenn Du es auch so nicht hinbekommst, kannst Du es bei diesem Modul auch auf die unsaubere Art und Weise machen:

Erstelle ein Verzeichnis File irgendwo in Deinem Webspace (Bsp: /home/www132/html/perllib).
Kopiere ReadBackwards.pm in den neuen Ordner File.

Binde CPAN:File::ReadBackwards so in Dein Skript ein:
Code: (dl )
1
2
3
4
use lib qw(/home/www132/html/perllib);
use File::ReadBackwards;

#... mehr Code ...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
RalphFFM
 2006-12-06 10:17
#9253 #9253
User since
2006-11-16
258 Artikel
BenutzerIn
[Homepage] [default_avatar]
Geht i.d.R. trotzdem: Per WebShell in ein privates Verzeichnis installieren.
topeg
 2006-12-06 10:47
#9254 #9254
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Wenn alles nicht funktionieren sollte nutze das:
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
#!/usr/bin/perl
use strict;
use warnings;

##################
# 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, '<', './read_backwards_test.txt') or die "$!\n";
my @lines = read_back($fh,5);
close($fh);

print 'Zeilen = '.@lines.":\n".join('',@lines)."\n";
\n\n

<!--EDIT|topeg|1165395109-->
Gast Gast
 2006-12-06 11:01
#9255 #9255
Hi,

@topeg

Geht nicht. Premature end of script headers: test.pl trotz gesetztem Header.

@renee & RalphFFM

can't read 'log_file' No such file or directory at test.pl line 14.

Habs nu installiert ;) Geht aber leider noch net wirklich
renee
 2006-12-06 11:06
#9256 #9256
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Zeig mal den Code...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2006-12-06 11:08
#9257 #9257
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl

use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use lib qw(/home/www/web33/html/cgi-bin/test/ReadBackwards.pm);
use File::ReadBackwards;

my $cgi = CGI->new();
print $cgi->header('text/plain');

my $file = './Variables/messages.txt';
my $frb = File::ReadBackwards->new( 'log_file' ) or
die "can't read 'log_file' $!";

for(0..9){
print $frb->readline();
}
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-->
renee
 2006-12-06 11:14
#9259 #9259
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@topeg: So ganz korrekt arbeitet der Code aber nicht:

Code: (dl )
1
2
3
4
5
6
[... # Dein Code copy&past ...]
open(my $fh, '<', './pm_groups.txt') or die "$!\n";
my @lines = read_back($fh,20);
close($fh);

print 'Zeilen = '.@lines.":\n".join('',@lines)."\n";
sollte ja 20 Zeilen einlesen. Ergebnis:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
Zeilen = 10:
Kaiserslautern.pm - kaiserslautern...
Berlin.pm - berlin...
Erlangen.pm - Erlangen...
Bielefeld.pm - bielefeld...
Ruhr.pm - ruhr-pm...
München.pm - perl-mongers...
Köln.pm - cologne...
Koblenz.pm - koblenz...
Paderborn.pm - paderborn...
Chemnitz.pm - chemnitz...


WinXP Home
ActivePerl 5.8.8
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2006-12-06 11:15
#9260 #9260
Hab ich gemacht, keine Bange ;)

Aber:

Can't use an undefined value as a symbol reference at test.pl line 11.
Gast Gast
 2006-12-06 11:19
#9261 #9261
[quote=topeg,06.12.2006, 10:11]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
#!/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 'Zeilen = '.@lines.":\n".join('',@lines)."\n";
[/quote]
Danke, geht aber leider auch nicht ^^

Can't use an undefined value as a symbol reference at test.pl line 14.
<< |< 1 2 3 4 5 6 7 8 >| >> 74 Einträge, 8 Seiten



View all threads created 2006-12-03 12:20.