use strict; use warnings; use File::Find; my @matches = (qr(.*\.pl$), qr(.*\.pm$)); find(sub{wanted ($_, @matches)}, '.'); sub wanted { my ($name, @m) = @_; print "$File::Find::name\n" if grep {$name =~ /$_/} @m; } #### ./noname1.pl ./noname1.pm ./noname2.pl ./noname2.pm ./SortaIniParser.pm ./StarTrek.pl ./Win32/FileVersionInfo.pm ./Win32/PEFile.pm