Free Trial

Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.

  • Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint
Share this Page URL
Help

A. Exercise Answers > A.16. Answer to Chapter 17 Exercises

Answer to Chapter 17 Exercises

  1. Here’s one way to do it:

    my $filename = 'path/to/sample_text';
    open FILE, $filename
      or die "Can't open '$filename': $!";
    chomp(my @strings = <FILE>);
    while (1) {
      print "Please enter a pattern: ";
      chomp(my $pattern = <STDIN>);
      last if $pattern =~ /^\s*$/;
      my @matches = eval {
        grep /$pattern/, @strings;
      };
      if ($@) {
        print "Error: $@";
      } else {
        my $count = @matches;
        print "There were $count matching strings:\n",
          map "$_\n", @matches;
      }
      print "\n";
    }

    This one uses an eval block to trap any failure that might occur when using the regular expression. Inside that block, a grep pulls the matching strings from the list of strings.

    Once the eval is finished, we can report either the error message or the matching strings. Note that we “unchomped” the strings for output by using map to add a newline to each string .


  

You are currently reading a PREVIEW of this book.

                                                                                                                    

Get instant access to over $1 million worth of books and videos.

  

Start a Free 10-Day Trial


  
  • Safari Books Online
  • Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint