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);
Or alternatively being a smidgen easier to read:
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);
A(4) * B(5) = 20
A(4) * C(10) = 40
A(4) * D(2) = 8
A(4) * E(9) = 36
B(5) * C(10) = 50
B(5) * D(2) = 10
B(5) * E(9) = 45
C(10) * D(2) = 20
C(10) * E(9) = 90
D(2) * E(9) = 18
