use strict; use warnings; use diagnostics; use File::Slurp; my @files = read_dir($ARGV[0]); #read files in dir into an array my $dir = $ARGV[0]; my $string = $ARGV[1]; my $file; my $line; foreach my $element (@files) { open $file, '<', "$dir/$element"; #open each file while (<$file>) { if ( $_ =~ $string ) { #match your string print "found $string in $element\n"; } } close $file; }