my @A = (1,2,3,4,5,4,3,2,1,2);
my @B = (2,4,6,8,10,8,6,4,2);
my (%First, %Second);
push @{ $First{ $A[$_] } }, $_ for (0..$#A);
push @{ $Second{ $B[$_] } }, $_ for (0..$#B);
my %Pairs;
for my $Common (grep {exists $Second{$_}} keys %First){
for my $Idx (@{ $First{$Common} }){
push @{ $Pairs{$Common} }, map([$Idx, $_], @{ $Second{$Common} });
}
}
# Print out what we found
for (sort keys %Pairs){
print "$_:\n", map(" $_\n", map(join('-', @$_), @{ $Pairs{$_} })), "\n";
}
####
push @{ $First{ $A[$_] } }, $_ for (0..$#A);
push @{ $Second{ $B[$_] } }, $_ for (0..$#B);
####
for my $Common (grep {exists $Second{$_}} keys %First){
####
for my $Idx (@{ $First{$Common} }){
push @{ $Pairs{$Common} }, map([$Idx, $_], @{ $Second{$Common} });
}
####
$Pairs{Each Common Value} = [ [A1, B1], [A1, B2], [A2, B1], [A2, B2] ]
####
$Pairs{4} = [[3,1], [3,7], [5,1], [5,7]]
####
2:
1-0
1-8
7-0
7-8
9-0
9-8
4:
3-1
3-7
5-1
5-7