@union = @intersection = @difference = (); %count = (); foreach $element (@a, @b) { $count{$element}++ } foreach $element (keys %count) { push @union, $element; push @{ $count{$element} > 1 ? \@intersection : \@difference }, $element; } foreach $int (@difference){ if ($int ne " "){ @fname = split(/ /, $int); print "\n difference elements --> $fname[0]\n"; } }