Compare arrays in perl

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

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;
}