Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: map syntax error -- weird

by LanX (Canon)
on Mar 22, 2013 at 10:28 UTC ( #1024910=note: print w/ replies, xml ) Need Help??


in reply to map syntax error -- weird

IMHO the parser is confused if or if not you mean to pass an anonymous hash instead of a code block to map.

Put the list into parens

DB<105> map { ( "x" => $_ ) } qw(1 2 3); => ("x", 1, "x", 2, "x", 3) DB<106> map { ( "x" => $y ) } qw(1 2 3); => ("x", undef, "x", undef, "x", undef) DB<110> @opts = map { ( "$_=s" => \$opt{$_} ) } @vals; => ("title=s", \undef, "artist=s", \undef, "album=s", \undef)

Cheers Rolf

( addicted to the Perl Programming Language)


Comment on Re: map syntax error -- weird
Download Code
Replies are listed 'Best First'.
Re^2: map syntax error -- weird
by McA (Priest) on Mar 22, 2013 at 10:32 UTC

    Rolf was faster with his answer than me. Allow one annotation: perldoc -f map has a paragraph explaining this ambiguity.

    McA

      oops true! =)

       
                     "{" 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:
      

      Since PBP "map EXPR, LIST" fell completely out of my scope, but it explains why a hash-ref could even be considered valid here.

      Cheers Rolf

      ( addicted to the Perl Programming Language)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1024910]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (6)
As of 2015-07-28 03:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (252 votes), past polls