SPUG: create a array which is XOR of two arrays

Joshua Keroes ua at pobox.com
Mon Oct 23 14:34:49 PDT 2006


On 10/23/06 12:41 AM, "Sachin Chaturvedi" <sachin_chat at coolgoose.com> wrote:
> i have two arrays { t1, t2 , t3 }, { t1 , t2 , t5, t7, t8}
>
> i want to create a new array which has all elements of array2 such that they
> are not in array1, e.g. {t5,t7,t8}


#!/usr/bin/perl -l

use strict;
use warnings;
use Set::Scalar;

my $s = Set::Scalar->new( qw[t1 t2 t3] );
my $t = Set::Scalar->new( qw[t1 t2 t5 t7 t8] );

# Take symmetric_difference()/xor/% of both sets
#
print "$s xor $t = " . ($s % $t);

# ...but I don't think you want a true xor, because t3 is present in
the results.
#
# If you want all elements in $t that are not in $s, try:
#
print "$t intersect $s xor $t = " . ($t * $s % $t);

__END__

Output:

(t1 t2 t3) xor (t1 t2 t5 t7 t8) = (t3 t5 t7 t8)
(t1 t2 t5 t7 t8) intersect (t1 t2 t3) xor (t1 t2 t5 t7 t8) = (t5 t7 t8)


More information about the spug-list mailing list