http://www.perlmonks.org?node_id=997252


in reply to Logical operations on arrays

One option is to use List::Compare:

use strict; use warnings; use List::Compare; my @a = qw(a b c); my @b = qw(b c d); print "\@a = @a\n\@b = @b\n\n"; print '@a AND @b = ', arrayANDCompare( \@a, \@b ), "\n\n"; print '@a OR @b = ', arrayORCompare( \@a, \@b ); sub arrayANDCompare { my ( $a, $b ) = @_; return List::Compare->new( $a, $b )->get_intersection; } sub arrayORCompare { my ( $a, $b ) = @_; return List::Compare->new( $a, $b )->get_union; }

Output:

@a = a b c @b = b c d @a AND @b = bc @a OR @b = abcd