in reply to @_0 vs. $_0

Yes, almost always, @foo[$bar] is broken, and should have been written $foo[$bar]. In many cases, this is an undetectable mistake, as in:
$total = @a[3] + @a[4]; # works print @a[5]; # works
But is fatal when we use it in a place where it makes a difference:
@a[3] = <STDIN>; # read one line? NOPE!
Hence the very right warning.

-- Randal L. Schwartz, Perl hacker