$ perl chdir_benchmar Benchmark: timing 1000 iterations of with_chdir, without_chdir... with_chdir: 16 wallclock secs ( 8.11 usr + 8.46 sys = 16.57 CPU) @ 60.35/s (n=1000) without_chdir: 31 wallclock secs (10.98 usr + 19.15 sys = 30.13 CPU) @ 33.19/s (n=1000) #### #!/usr/bin/perl use warnings; use strict; use Benchmark; sub with_chdir { my $d = shift; my $filecount = 0; chdir($d) or die "chdir: $!\n"; opendir(DIR,"."); while(my $f = readdir(DIR)) { ( -f $f) and $filecount++; } } sub without_chdir { my $d = shift; my $filecount = 0; opendir(DIR,$d); while(my $f = readdir(DIR)) { ( -f "$d/$f") and $filecount++; } } use constant TESTDIR => "/var/mail"; timethese(100, { with_chdir => sub { with_chdir(TESTDIR); }, without_chdir => sub { without_chdir(TESTDIR); }, });