This is the relevant section from the perldoc -f map docs:map { +"$_" => undef } ();
"{" starts both hash references and blocks, so
"map { ..." could be either the start of map BLOCK
LIST or map EXPR, LIST. Because perl doesn't look
ahead for the closing "}" it has to take a guess
at which its dealing with based what it finds just
after the "{". Usually it gets it right, but if it
doesn't it won't realize something is wrong until
it gets to the "}" and encounters the missing (or
unexpected) comma. The syntax error will be
reported close to the "}" but you'll need to
change something near the "{" such as using a
unary "+" to give perl some help:
%hash = map { "\L$_", 1 } @array # perl guesses EXPR. wrong
%hash = map { +"\L$_", 1 } @array # perl guesses BLOCK. right
In reply to Re: Is this a perl compiler bug?
by davidrw
in thread Is this a perl compiler bug?
by bollock
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |