use File::Find (); # no namespace pollution my @startDirectories = ....; my @foundFiles = &FindFiles(@startDirectories); sub FindFiles { my @rootdirs = @_; my @foundFiles = (); File::Find::find sub { if (-f $File::Find::name){ # just files push (@foundFiles, $File::Find::name); } }, @rootdirs; return (@foundFiles); } # FindFiles