Taking It for a Spin
That’s a lot of information to digest at one sitting. Let’s put some of this into practice to help you get a better grasp of it. For this test drive, we’ll be using the script shown in Example 7-1.
Example 7-1. A simple script to demonstrate regular expression behavior
#!/usr/bin/perl -w
# regex.plx
# test regular expression behavior
$string = 'Walnuts are very nutritious.';
if ($string =~ /Walnuts/) {
print "Match!\n";
} else {
print "No match!\n";
}Running this script should yield the following output:
[jbc@andros regex]$ regex.plx
Match!This shouldn’t be terribly surprising. We’re looking for
the literal string Walnuts, which occurs inside
the string, so we have a match.
Let’s try out that fancy word-boundary backslash sequence
\b. We can do that by modifying the line
containing the regular expression in regex.plx to
look like this:
if ($string =~ /Wal\bnuts/) {Now when we run the script we should get the following:
[jbc@andros regex]$ regex.plx
No match!The \b makes it so that the expression can no
longer match, since it doesn’t have a word boundary between
Wal and nuts.
Now change that \b to a \B
(which says there isn’t a word boundary at that location):
if ($string =~ /Wal\Bnuts/) {When we run the script it should give us:
[jbc@andros regex]$ regex.plx
Match!Notice how the \B sequence doesn’t actually
take up any space in the match. That is,
/Wal\Bnuts/ can still match the string
Walnuts, even though it has that
\B sequence stuck in the middle of it. The ...