in reply to meaning of '@' sigil on a hash?

In Perl5, the sigil represents how the variable should be treated. It does not represent the type of the variable. So just like $ can be used by scalar, arrays and hashes, @ can be used by arrays and hashes.

select elementselect elements (slice)all keysall valuesall keys & values
scalar$scalar
array$array[$i]@array[@i](0..$#array)@array
hash$hash{$i}@hash{@i}keys(%hash)values(%hash)%hash
list(...)[@i]

This is all documented in perldata, including slices.

Update: Reordered the columns.