Current Perl documentation can be found at perldoc.perl.org.
Here is our local, out-dated (pre-5.6) version:
Two common misconceptions are that is a synonym for s+, and that it's the edge between whitespace characters and non-whitespace
characters. Neither is correct.
is the place between a
w
character and a W
character (that is, is the edge of a ``word''). It's a zero-width assertion, just like
^
, $
, and all the other anchors, so it doesn't consume any characters. the perlre manpage
describes the behaviour of all the regexp metacharacters.
Here are examples of the incorrect application of , with fixes:
"two words" =~ /(w+)(w+)/; # WRONG "two words" =~ /(w+)s+(w+)/; # right
" =matchless= text" =~ /=(w+)=/; # WRONG " =matchless= text" =~ /=(w+)=/; # right
Although they may not do what you thought they did, and
B
can still be quite useful. For an example of the correct use of
, see the example of matching duplicate words over multiple lines.
An example of using B
is the pattern BisB
. This will find occurrences of ``is'' on the insides of words only, as in
``thistle'', but not ``this'' or ``island''.