use File::Find::Rule; my $directory="../mydir"; # find all the subdirectories of a given directory my @subdirs = File::Find::Rule->directory->in( $directory ); my $rule = File::Find::Rule->new; $rule->file; $rule->name( '*.pl' ); my @files = $rule->in( $directory ); foreach (@files) { print "$_\n"; }