To fix the last line, you need to treat the hash as a hash instead of trying to use it as a reference - change %hash->{$_}[1] to $hash{$_}[1] (and the same for [2]) and you should be good to go.
As for the error messages:
Using a hash as a reference is deprecated: You get this because you're trying to use an actual hash (not a hash reference) as if it were a reference. This used to be allowed, but isn't any more.
Global symbol "$hash" requires explicit package name: This one comes from trying to dereference the variable $hash, which doesn't exist. In Perl 5, %hash refers to the hash as a whole and $hash{x} refers to a single item within %hash, while $hash (with no {}) is an independent scalar. The sigil represents the part of the variable you're accessing, not the variable itself. (Note that this is different in Perl 6, where anything related to %hash is always accessed using the % sigil.)
Edit: Corrected typo. Had a %_ where it should have been $_.
In reply to Re: references - proper use of infix (arrow) and deprecated hash references
by dsheroh
in thread references - proper use of infix (arrow) and deprecated hash references
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |