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
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,
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''.