foreach my $set ( sort keys %HoHoA) { print "$set\n"; my @key = keys %{$HoHoA{$set}}; for ( my $i = 0; $i<@key; $i++ ) { for (my $j=$i+1; $j<@key; $j++ ) { print "$key[$i] - $key[$j]\n"; } } } # Am I attacking the problem correctly?