If this is a new problem it seems that it may have something to do with the current prototype system.
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 (&@).
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|