use Benchmark; use strict; my $dir = '/some/small/dir'; my $file = 'somefile*'; opendir (F, $dir); timethese(5000, {'ls on small dir' => \&foo, 'allready opendir on small dir' => \&bar, 'opening dir on small dir' => \&baz}); $dir = '/some/large/dir'; $file = 'somefile*'; print "\n\n\n"; closedir F; opendir (F, $dir); timethese(5000, {'ls on large dir' => \&foo, 'allready opendir on large dir' => \&bar, 'opening dir on large dir' => \&baz}); closedir F; sub foo { my $a = `ls $dir/$file &>/dev/null`; } sub bar { my (@files) = (grep (/$file/, readdir(F))); rewinddir (F); } sub baz { opendir (DIR, $dir); my (@files) = (grep (/$file/, readdir(DIR))); closedir F; }