my %hash=(A=>4, B=>5, C=>10, D=>2, E=>9); my @zip = map { [ $_, $hash{$_} ] } sort keys %hash; do { my $f = shift @zip; print ("@$f * @$_ = ", $f->[1] * $_->[1], "\n") for (@zip); } while (@zip);