Buzkie Buzkie - 2 months ago 6
Perl Question

Comparing Two Arrays Using Perl

I have two arrays. I need to check and see if the elements of one appear in the other one.

Is there a more efficient way to do it than nested loops? I have a few thousand elements in each and need to run the program frequently.

Answer

Another way to do it is to use Array::Utils

    use Array::Utils qw(:all);

    my @a = qw( a b c d );
    my @b = qw( c d e f );

    # symmetric difference
    my @diff = array_diff(@a, @b);

    # intersection
    my @isect = intersect(@a, @b);

    # unique union
    my @unique = unique(@a, @b);

    # check if arrays contain same members
    if ( !array_diff(@a, @b) ) {
            # do something
    }

    # get items from array @a that are not in array @b
    my @minus = array_minus( @a, @b );
Comments