Hello,
Let's say that we have the two following arrays
@array1=[1,2,4,6,7,8]
@array2=[1,2,3,5,6,7]
Is there any easy way to compare these two arrays and print the values that exist in array1 and not in array2 and the values that exist in array2 and not in array1?
Regards,
Chriss_58
SFNYC
December 3, 2008, 11:16am
2
I found something in the Perl Cookbook that may help you.
$ cat ./compare_array.pl
#!/usr/bin/perl
use strict;
use warnings;
my @array1;
my @array2;
my @diff;
my @isect;
my $item;
my %count;
@array1 = (1, 2, 4, 6, 7, 8);
@array2 = (1, 2, 3, 5, 6, 7);
@isect = ( );
@diff = ( );
%count = ( );
foreach $item (@array1, @array2) { $count{$item}++;}
foreach $item (keys %count) {
if ($count{$item} == 2) {
push @isect, $item;
} else {
push @diff, $item;
}
}
print "\nA Array = @array1\n";
print "\nB Array = @array2\n";
print "\nIntersect Array = @isect\n";
print "\nDiff Array = @diff\n\n";
exit 0;
$ ./compare_array.pl
A Array = 1 2 4 6 7 8
B Array = 1 2 3 5 6 7
Intersect Array = 6 1 7 2
Diff Array = 8 4 3 5
Something like this?
$ perl -le'
@array1=(1,2,4,6,7,8);
@array2=(1,2,3,5,6,7);
map $count{$_}++ , @array1, @array2;
$, = ",";
print grep $count{$_} == 1, @array1, @array2;
'
4,8,3,5
@array1=(1,2,4,6,7,8);
@array2=(1,2,3,5,6,7);
for $i (@array1) {
print "$i\n" if ! grep {$i == $_} @array2;
}