@array = qw[ foo bar qux ];;
print @{ array }[ 0 ];;
Scalar value @{ array }[ 0 ] better written as ${ array }[ 0 ] at
foo
But these do not:
$name = 'array';;
print @{ $name }[ 0 ];;
foo
$ref = \@array;;
print @{ $ref }[ 0 ];;
foo
As this scrunched up deparse output shows, the extra level of indirection means that the code goes through a different path, and the warning has never been attached to that other path:
9 <;> nextstate(...)v ->a 9 <;> nextstate(...) v ->a
g <@> print vK ->h g <@> print vK ->h
a <0> pushmark s ->b a <0> pushmark s ->b
f <@> aslice lK ->g f <@> aslice lK ->g
b <0> pushmark s ->c b <0> pushmark s ->c
c <$> const[IV 0] s ->d c <$> const[IV 0] s ->d
e <1> rv2av[t5] sKR/1 ->f e <1> rv2av[t4] sKR/1 ->f
d <#> gv[*array] s ->e - <@> scope sK ->e
-e syntax OK - <0> ex-nextstate v ->d
d <$> const[PV "array"] s ->e
-e syntax OK
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
|