use File::Find::Rule; my $directory="../yourdirectory"; # 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 my $files(@files) { open (FILE, "$files"); while($line= ){ print "$line" if grep /\buse\b/, $line; } close FILE; }