in reply to Get Filename using perl

From the prompt: grep -l keyword *

Lazy perl way: $filename = `grep -l keyword *`

or

# Exits as soon as a match is found. # only reads a line in at a time, not the entire file. sub find_file { my ($dir_name, $keyword) = @_; my $file_name; my $file_path; my $dh = DirHandle->new($dir_name) or die("Can't read directory: $!.\n"); while (defined($file_name = $dh->read())) { $file_path = "$dir_name/$file_name"; next if ($file_name eq '.'); next if ($file_name eq '..'); next unless (-f $file_path); my $fh = FileHandle->new($file_path, 'r') or warn("Can't read file $file_name: $!.\n"); while (defined($_ = $fh->getline())) { return $file_name if (index($_, $keyword) != -1); } } return undef; }