use strict; use warnings; use autodie; sub findpattern { my $file = shift; my $pattern = shift; open my $fh, '<', $file; while(my $line=<$fh>){ return 1 if $line =~ /$pattern/; } return 0; } my @files = <*.pl>; my @success = grep { findpattern( $_, "Data::Dumper" ) } @files; print join "\n", @success, "\n";