use File::ReadBackwards; tie *LOG, File::ReadBackwards, $log_file or die "can't read '$log_file' $!" ; # now read the file in the usual way EXCEPT we # read the last line first, first line last :-) # how's that for an interesting use of tie? while() { print; }