in reply to Re: How to look for exact pattern match
in thread How to look for exact pattern match

It's not really what I like to do. I want to remove all exact matches which occur in @test out of the array @in. So the array @in should become (cbga test). With (grep s/($temp)/ /ig,@new_array) it removed all matches instead of exact matches so my array became (c test) instead of (cbga test).

  • Comment on Re: Re: How to look for exact pattern match

Replies are listed 'Best First'.
Re: Re: Re: How to look for exact pattern match
by davorg (Chancellor) on Oct 30, 2001 at 16:00 UTC

    You're not removing the elements, you're replacing them with spaces.

    I think you want this, then:

    my @in = qw(bga cbga test); my @out = @in; my @test = qw(bga); foreach my $test (@test) { @out = grep { $_ ne $test } @out; }

    Which leave @out contains all the elements from @in that don't exist in @test.

    Actually, thinking about it, that's the disjunction of two sets and there's probably some really short recipe to do it in the Cookbook.

    --
    <http://www.dave.org.uk>

    "The first rule of Perl club is you don't talk about Perl club."

      And since the original poster wanted case insensitivity, remember to sprinkle around lc's or uc's liberally:
      @out=grep { lc($_) ne lc($test) } @out;
      or somesuch drivel.

      Actually, thinking about it, that's the disjunction of two sets and there's probably some really short recipe to do it in the Cookbook.

      ITYM FAQ, but yes.

      $ perldoc -q 'difference' Found in /usr/lib/perl5/5.6.1/pod/perlfaq4.pod How do I compute the difference of two arrays? How do I compute the intersection of two arrays? ...