A.16. Answer to Chapter 17 Exercises
-
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 .
| | | A.15. Answers to Chapter 16 Exercises | | B. Beyond the Llama |
Copyright © 2002 O'Reilly & Associates. All rights reserved.
|
|