my @array1 = qw(mitteldeutschem mitteldeutsches mitteleuropaeisch mitteleuropaeische); my @array2 = qw(mitteldeutschem mitteldeutsches); my @union = (); my @intersection = (); my @difference = (); my %count = (); foreach my $element (@array1, @array2, @array3) { $count{$element}++ }; foreach my $element (keys %count) { push @union, $element; push @{ $count{$element} > 2 ? \@intersection : \@difference }, $element; }