Listing 5: simple-find-2.pl
#!/usr/bin/perl -w
use strict;
use diagnostics;
use File::Find;
# Get the pattern from the input list
my $pattern = shift @ARGV;
# Slurp up the entire contents of a file
$/ = undef;
print qq{Searching for "$pattern".\n};
# Invoke "find" with a reference to our subroutine,
# with the directories passed as arguments
find(\&find_matches, @ARGV);
sub find_matches
{
    my $filename = $_;
    # Open the file, and search through its
    # contents
    if (open FILE, $filename)
    {
   # Get the file
   my $contents = (<FILE>);
   # If there aren't any contents, then return
   # right away
   return unless $contents;
   # Print the filename, with the directory
   print qq{$File::Find::dir/$filename\n}
       if ($contents =~ m|\b$pattern\b|is);
   close FILE;
    }
    else
    {
   warn qq{Unable to open
       "$File::Find::dir/$filename": $! };
   return;
    }
}