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