Zoologically speaking, Perl's pattern-matching operators function as a kind of cage for regular expressions, to keep them from getting out. This is by design; if we were to let the regex beasties wander throughout the language, Perl would be a total jungle. The world needs its jungles, of course--they're the engines of biological diversity, after all--but jungles should stay where they belong. Similarly, despite being the engines of combinatorial diversity, regular expressions should stay inside pattern match operators where they belong. It's a jungle in there.
As if regular expressions weren't powerful enough, the
s/// operators also
provide the (likewise confined) power of double-quote interpolation.
Since patterns are parsed like double-quoted strings, all the normal
double-quote conventions will work, including variable interpolation
(unless you use single quotes as the delimiter) and special characters
indicated with backslash escapes. (See "Specific Characters" later in
this chapter.) These are applied before the string is interpreted as a
regular expression. (This is one of the few places in the Perl
language where a string undergoes more than one pass of processing.)
The first pass is not quite normal double-quote interpolation, in that
it knows what it should interpolate and what it should pass on to the
regular expression parser. So, for instance, any
$ immediately followed by a vertical bar, closing parenthesis, or the end ...