in reply to Re^5: why such an error happened?
in thread why such an error happened?
lightoverhead is correct. Perhaps you missed the "g" modifier? There will be three matches.
Update: I understand your confusion better now. I'll correct what you said:
$1 represents what was matched in the first set of
matchedparenthesis. $2 represents what was matched in the second set ofmatchedparenthesis.
There's no such thing as "matched parentheses" Either the whole pattern matches or it doesn't.
________ $1 unconditionally refers to this capture / if the match was successful. | | __ $2 unconditionally refers to this capture | / if the match was successful. | | v v /(...)|(...)/
It can easily be demonstrated:
for (qw(a b)) { /(a)|(b)/; print( defined($1) ? $1 : '~', defined($2) ? $2 : '~', "\n" ); }
a~ ~b
|
|---|