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);