Assigning anonymous hash to a list
Smylers
Smylers at stripey.com
Tue Jul 30 22:17:56 BST 2013
gvim writes:
> On 30/07/2013 20:09, Joseph Werner wrote:
>
> > It is because you are not assigning a list value to a list. You are
> > assigning a scalar value that is the result of a ',' expression to
> > the first element in the list.
>
> Got it. Nothing to do with the hashref. Should have used parens ...
Yes!
> ... to create list context.
No -- you already had list context!
But , has lower precedence than = does (see perldoc perlop). So your
statement:
my ($str, $ref) = 'text', {a => 1, b => 2, c => 3};
is parsed as first do this -- which is a list-context assignment:
my ($str, $ref) = 'text'
and then 'do' this -- which is just some data, in void context:
{a => 1, b => 2, c => 3}
The extra parens on the right don't change any context; they just
restrict the comma to only operating inside those parens, rather than
splitting up your statement in an unwanted place.
Smylers
--
Stop drug companies hiding negative research results.
Sign the AllTrials petition to get all clinical research results published.
Read more: http://www.alltrials.net/blog/the-alltrials-campaign/
More information about the london.pm
mailing list