Am I missing something or is List::Compare in your context giving you nothing that this code does not? This is probably faster and will use less memory as well.
my @ary1 = ( 1..10 );
my @ary2 = ( 5..15 );
my %h;
$h{$_}++ for ( @ary1, @ary2 );
unique( "Only in ary1", \@ary1, \%h );
unique( "Only in ary2", \@ary2, \%h );
common( "Common to ary1 and ary2", \%h );
sub unique {
my ( $text, $ary, $hash ) = @_;
print $text, $/;
do{ print "$_\n" unless $hash->{$_} == 2} for @$ary;
}
sub common {
my ( $text, $hash ) = @_;
print $text, $/;
do{ print "$_\n" if $hash->{$_} == 2} for keys %$hash
}