#!/usr/bin/perl use strict; use File::ReadFileBackwards; my @instances = (); $file=File::ReadFileBackwards->new("/some/log/file"); while (@instances < 10 and defined($line = $file->readline)) { push @instances, $line; } #### #!/usr/bin/perl use strict; use File::Tail; my @instances = (); $file=File::Tail->new("/some/log/file"); while (defined($line=$file->read)) { if ($line =~ m/criteria/) { my $discard = pop @instances if @instances > 10; push @instances, $line; } }