in reply to references - proper use of infix (arrow) and deprecated hash references
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 $_.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: references - proper use of infix (arrow) and deprecated hash references
by haukex (Archbishop) on Jul 18, 2017 at 16:29 UTC | |
by dsheroh (Monsignor) on Jul 19, 2017 at 17:14 UTC | |
|
Re^2: references - proper use of infix (arrow) and deprecated hash references
by ic23oluk (Sexton) on Jul 18, 2017 at 09:25 UTC |