Rate FileFind FixedOP FileFind 163/s -- -70% FixedOP 546/s 235% -- #### use File::Find; use File::stat; use strict; use Benchmark qw(:all); my $dirname = './'; my $oldestfile; my $filename; cmpthese (-2, {'FixedOP' => 'op ();', 'FileFind' => 'ff ()'}); sub op { $oldestfile = 0; $filename = "No BOT REPORT: ERROR"; opendir(DIR, $dirname) or die "can't opendir $dirname: $!"; while (my $file = readdir(DIR)) { if ($file =~ /\.txt$/) { my $x = stat($dirname.$file)->mtime (); if ( $x > $oldestfile) { $oldestfile = $x; $filename = $file; } } } #print "Oldest file >$filename< last touched $oldestfile\n"; closedir(DIR); } sub ff { $oldestfile = 0; $filename = "No BOT REPORT: ERROR"; find (\&search, $dirname); #print "Oldest file >$filename< last touched $oldestfile\n"; sub search { if (-d $File::Find::name) { $File::Find::prune = 1 if $File::Find::name ne '.'; return; } return if $File::Find::name !~ /\.txt$/; return if (my $x = stat($File::Find::name)->mtime ()) <= $oldestfile; $oldestfile = $x; $filename = $File::Find::name; } }