use File::ReadBackwards; tie *BW, 'File::ReadBackwards', 'file' or die "can't read 'file' $!"; while ( ) { if ( /pattern/ ) { print; last; } }