use File::Find; find ( ref to function, start path(s) ) e.g.: use File::Find; find (\&wanted, '.'); sub wanted { print($File::Find::dir, "/$_\n") if -d $_; } or, just as good: use File::Find; find ( sub {print($File::Find::dir, "/$_\n") if -d $_}, '.');