@x->[2]
scalar(@x)->[2]
"@$ref->[0]" can be parsed as @{$ref->[0]}, where $ref
refers to an array whose first element is an arrayref.
yours,
Michael | [reply] [d/l] |
Nuh-uh!
@$ref->[0] can be parsed as @{$ref->[0]}
That's not what's happening.
From perlref:
Because of being able to omit the curlies for the simple case of $$x, people often make the mistake of viewing the dereferencing symbols as proper operators, and wonder about their precedence.
Example code:
use strict;
my $r = [qw/foo bar/];
print $r->[0]; # 'foo'
print @$r->[0]; # 'foo', due to bug.
print @{$r->[0]}; # Can't use string ("foo") as an ARRAY ref...
I bet that you've several times have heard "use references as variable names". That is a good way to describe references, and it works here too. Having $r = \@x, @$r->[0] will be the same as @x->[0]. So it is indeed the same issue as in perldelta.
| [reply] [d/l] [select] |