#!/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";