http://qs321.pair.com?node_id=1031166


in reply to Array of filehandles

If you want the filenames and not the handles for the files that match the pattern, it is better to operate on the filenames and not the handles. If you want the handles, my code can be modified easily: just pass in the handles and remove the open statement.

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