in reply to Re^4: accessing array elements using a reference
in thread accessing array elements using a reference

For the same reason that this also issues the warning:

@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.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."