G'day hdb,
"How can this be?"
The underlying problem is that "$1" can only have one value for each iteration of map.
If you swap the CAUSE and AFFECT (__DATA__) lines, you get the same result; however, if you swap the cause and effect (map) lines, you get both values set to FAIL. Also, removing CAUSE or AFFECT from __DATA__ correctly gives a match result and an UNDEF.
"And how can it be fixed?"
This worked for me:
'cause' => ((/CAUSE (\S+)/)[0] || 'UNDEF'), 'effect' => ((/AFFECT (\S+)/)[0] || 'UNDEF'),
"(Must be a case of Perl punishing my vanity...)"
If you say so :-)
Update: Sorry, not sure what happened, I just typed the wrong words: s{you get the correct result.}{you get both values set to FAIL.}
-- Ken
In reply to Re: Unexpected matching results
by kcott
in thread Unexpected matching results
by hdb
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |