Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: Array Comparison

by Roy Johnson (Monsignor)
on Dec 22, 2003 at 19:00 UTC ( [id://316450]=note: print w/replies, xml ) Need Help??


in reply to Array Comparison

Your code does several things more than you describe. In addition to removing (case-insensitive) duplicates, it also has some other criteria for elimination, which should not be inside the foreach.

To duplicate your code functionally, we have to:

  1. Remove non-words (you missed a closing / in that pattern, by the way)
  2. Remove words shorter than 4 chars
  3. Remove words that appear more than once (your technique suggests that the list is sorted)
  4. Remove words that appear in @exclude
Ok, here we go!
# given @words and @exclude my %seen; @seen{@exclude} = (1) x @exclude; @words = grep { (! /\W/) and (length() >= 4) and ($seen{$_}++ == 0) } @words;
We pre-load %seen with a flag for each word in @exclude. Then, as we're looking through @words itself, we mark each element as seen as well.

The PerlMonk tr/// Advocate

Replies are listed 'Best First'.
Re: Re: Array Comparison
by mcogan1966 (Monk) on Dec 22, 2003 at 19:16 UTC
    Very nice. Does exactly what I need, and quickly too. Only thing left for this is to make the comparison non-case-dependent and it's perfect. I'll play around with this a touch. Thanks a bunch.

    Got it by making the arrays all lower-case when they are set up. Nice and quick.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://316450]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (3)
As of 2024-04-20 02:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found