my %hash1; my %hash2 = (1 => 2, 3 => 5, 4 => 2,); my @keys = keys %hash2; for (my $i=0; $i<@keys; $i++) { $hash1{"$keys[$i]-$keys[$i]"}=$hash2{$keys[$i]}; for (my $j=$i+1; $j<@keys; $j++) { $hash1{"$keys[$i]-$keys[$j]"} = $hash2{$keys[$i]}*$hash2{$keys[$j]}; } }