@union = ((SDT,`1781183799.44927\',-----), #### @union = (['SDT','1781183799.44927\','-----'], ['BN','1781183799.44972\','-----'], ['BNN','1781183799.46753\','-----']); #### my @diff; my @inter my %count2 = (); foreach my $element (@union,@ICUNAV) { my $k=join '',@$element; $count2{$k}{COUNT}++; $count2{$k}{ELEMENT}=$element; }; foreach my $element (keys %count2) { push @{ $count2{$element}{COUNT} > 1 ? \@inter : \@diff }, $count2{$element}{ELEMENT}; }; print Dumper(@diff),"\n";