Chris Charley
User
Aug 31, 2012, 3:57 AM
Views: 1884

Re: [perlchaser] compare two arrays



Here is the answer given in perldoc, (type perldoc q intersection at your command prompt. C:\Old_Data\perlp>perldoc q intersection Found in C:\Perl64\lib\pods\perlfaq4.pod How do I compute the difference of two arrays? How do I compute the intersection of two arrays? Use a hash. Here's code to do both and more. It assumes that each element is unique in a given array: @union = @intersection = @difference = (); %count = (); foreach $element (@array1, @array2) { $count{$element}++ } foreach $element (keys %count) { push @union, $element; push @{ $count{$element} > 1 ? \@intersection : \@difference }, $element; } Note that this is the *symmetric difference*, that is, all elements in either A or in B but not in both. Think of it as an xor operation. C:\Old_Data\perlp> The module, List::Compare, will also do this for you.
(This post was edited by Chris Charley on Aug 31, 2012, 4:00 AM)
