use File::Find; $source = '/somedir'; $somefile = 'somefile.txt'; traverse(); sub traverse { my %opts = ( wanted => \&eval_files, ); finddepth(\%opts, $source); } sub eval_files { if (-f && $_ eq $somefile) { print 'Got ', $_,"\n"; } }