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

That's called slicing: @hash{@keys} = @values; And this is bogus code: $hash{@keys} = @values; When you want to take a slice, you will end up with a list, so that sigil will not be "$" but "@" both for hash and array slices. Array slice:
@array[0..4] = qw(a b c d e);