in reply to Syntax question with
If map was declared map (&@) {} then all the constructs above would work (since the first argument is always interpreted as a code block/ref and I've tested it with a custom map under 5.6), except that the other map syntax map EXPR, list as opposed to the one under discussion map BLOCK list would not work.
I can't work out how to use the EXPR syntax for user-defined subs (perlsub suggests grep is (&@) which wouldn't work since the first argument to grep can be a block or an re). So map must be a special case in the perl internals but the code that determines must as merlyn says be unable to determine what it should be using when the braces can have two meanings. If map is really special cased then this problem could probably be fixed if there was any real need, for now use {; } as merlyn suggested of create a wrapper for map which does have a prototype of (&@).
|
|---|