##
my @sets = (\@array1, \@array2, ...);
for my $i (0..$#sets) {
for my $j ($i+1..$#sets) {
compute_stuff($sets[$i], $sets[$j]);
}
}
####
sub union_intersection {
my ($set1, $set2) = @_;
my (%union, %intersection)
for my $e (@$set1, @$set2) { ... }
...
}