foreach my $item (keys %items) { my @set = sort @{$items{$item}}; for my $first (0..$#set) { for my $second ($first+1..$#set) { $corr{ $set[$first] }{ $set[$second] }++; } } } for my $first (sort keys %corr) { for my $second (sort keys %{$corr{$first}}) { print "$first $second: $corr{$first}{$second}\n"; } }