use strict; my @keys = (1..3); my @values = (4..6); my %hash; @hash{@keys} = @values; # works, but two statements # my %hash{@keys} = @values; I wished this worked, but syntax error # my @hash{@keys} = @values; Also syntax error # my $hash{@keys} = @values; Clearly wrong, and dumb (and syntax error) my %hash = map {$keys[$_] => $values[$_]} (0..$#keys); # Far too long-winded no strict; @hash{@keys} = @values; # works, but ew