in reply to Re: YAPC::NA::2003::mandog
in thread YAPC::NA::2003::mandog

$1 is what was matched by the first set of parenthesis of the last succesful regular expression. It will therefore never refer to (parts of) the current match in progress (ignoring (?{ }) and (??{ }) issues). $1 is a variable - it interpolates just like any other variable; it doesn't have a special meaning inside a regular expression.

\1 does have a special meaning inside a regular expression: it matches exactly the same (sub)string as was matched by the first set of parenthesis in the current regular expression. It's not a variable, it's a special construct. In other interpolative contexts, it means something else: \NNN means the character with octal value NNN. It's a construct, just like \xNN or \n.

There's one exception, inside the replacement part of a substitution, \1 .. \9 (so, that's only 9 exceptions, it doesn't work for higher numbers) are equivalent to $1 .. $9, but their use does trigger a warning.

Abigail