#! perl -slw use strict; use File::ReadBackwards; use Tie::File; use Benchmark::Timer; my $t = new Benchmark::Timer; my $filename = $ARGV[0]; print 'Read to array'; $t->start('read-to-array'); { open FH, '<', $filename or die $!; my @file = ; close FH; my ($first, $last) = @file[0,-1]; } $t->stop('read-to-array'); print 'Read forward'; $t->start('read-forward'); { open FH, '<', $filename or die $!; my $first = ; my $last= while not eof; $last = $first unless $last; close FH; } $t->stop('read-forward'); print 'Read backward'; $t->start('File::ReadBackwards'); { open FH, '<', $filename or die $!; my $first = ; close FH; my $last = File::ReadBackwards->new($filename)->readline; } $t->stop('File::ReadBackwards'); print 'Tie::File'; $t->start('Tie::File'); { tie my @tied, 'Tie::File', $filename; my ($first, $last) = @tied[0,-1]; untie @tied; } $t->stop('Tie::File'); $t->report;