As long as you know what the difference is, it doesn't really matter much which one you use.
Under some circumstances, it might be more "natural" to use a plain hash, for example when Perl syntactically requires a hash, as in keys %hash (because then you don't have to write keys %$hash to dereference a hashref). In other cases, it might be more natural to use a hashref in the first place, e.g. when you want to pass it to a function without copying/flattening it (so you can say func($hash) instead of func(\%hash) ). But ultimately, it's just a matter of personal preference.
P.S.: the arrows between indices are optional (because there's nothing to disambiguate — nested structures are always references), i.e. your sample case could also be written as
$a[0][2]{foo} # plain array $r->[0][2]{foo} # array ref
In reply to Re: when to use lists/hash vs references?
by almut
in thread when to use lists/hash vs references?
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |