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

Why do you need the '@' preceding the hash name and not a '$'?

Because you are accessing the hash in list context. Did you try it with a $ as sigil? Doing so will result in

$VAR1 = { '3' => 3 };

because $hash{@keys} is a scalar. So, the array @keys is evaluated in scalar context, which yields 3 (three elements). The scalar context on the left of the assignment enforces scalar context on the right, so that's also 3 (three elements.)

--shmem

_($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                              /\_¯/(q    /
----------------------------  \__(m.====·.(_("always off the crowd"))."·
");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}