use File::Find; find(\%options, @directories); find(\&wanted, @directories); sub wanted { ... } finddepth(\%options, @directories); finddepth(\&wanted, @directories); sub wanted { ... } find({ wanted => \&process, follow => 1 }, '.');