This is a FAQ. The basic solution is to put the elements @arr2 in a hash and then use grep. (If you can arrange that @arr2 is a hash from the get go then you are one up on this.)
my %hash; @hash{@arr2}=(1) x @arr2; my @cleaned=grep !$hash{$_},@arr1;
The running time of this is N+M, ie the number of elements in both arrays summed together.

Here is the relevant FAQ (in fact it explains how to do array union, intersection, and difference, the above only does the difference.)

E:\Bin>perldoc -q "difference of two arrays" Found in E:\Perl\lib\pod\perlfaq4.pod How do I compute the difference of two arrays? How do I compute the + intersection of two arrays? Use a hash. Here's code to do both and more. It assumes th +at each element is unique in a given array: @union = @intersection = @difference = (); %count = (); foreach $element (@array1, @array2) { $count{$element} +++ } foreach $element (keys %count) { push @union, $element; push @{ $count{$element} > 1 ? \@intersection : \@ +difference }, $element; } Note that this is the *symmetric difference*, that is, all elements in either A or in B but not in both. Think of it +as an xor operation.
In future please try doing some rudimentary searching before asking a question. Especially for something simple like this. It almost certainly has been asked and answered time and again.

HTH

--- demerphq
The trick is to use Perls strengths, not its weaknesses -- Larry Wall


In reply to Re: How to splice out multiple entries from an array by demerphq
in thread How to splice out multiple entries from an array by Ya

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.