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; }