#! perl -slw use strict; use Data::Dump qw[ pp ]; use Time::HiRes qw[ time ]; use File::ReadBackwards; tie *FH, 'File::ReadBackwards', $ARGV[0] or die $!; my $start = time; my( $last, @a, @b ); while( ) { /\d+\t(\d+)/; if( $1 > 3 ) { unshift @b, $1; unshift @a, $last; last if @b == 7; } $last = $1; } print time() - $start; print join ' ',times; pp \@a, \@b;