in reply to Code Loop?

I'm not sure what you intended with your code, but let's look at what Perl sees:

>perl -w -MO=Deparse tmp.pl BEGIN { $^W = 1; } sub BEGIN { require 5.01; } use strict 'refs'; BEGIN { $^H{'feature_say'} = q(1); $^H{'feature_state'} = q(1); $^H{'feature_switch'} = q(1); } my(@x) = ('x', 1); my $y = \@x; say $#@ x [1];

This is the interesting line:

say $#@ x [1];

So Perl doesn't see anything regarding @x there, but sees the variable $#@ (the last index of the @@ array, repeated [1] times. Any reference in numerical context evalues to a (large) number. This is what causes the repeated output of -1.