Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re^2: Ignore Case when comparing Hash Keys

by avidcoder (Novice)
on Nov 15, 2010 at 18:56 UTC ( [id://871542]=note: print w/replies, xml ) Need Help??


in reply to Re: Ignore Case when comparing Hash Keys
in thread Ignore Case when comparing Hash Keys

I cant convert the Hash Keys to lower case, because I want to display the Keys and Values Side by side in the output and I want to keep the original Case of the Keys. I was wondering if there is something like if ($a =~ /$search/i) kind of comparison that ignores the case and matches the keys. Also I want the hash to give me the value of the key
  • Comment on Re^2: Ignore Case when comparing Hash Keys

Replies are listed 'Best First'.
Re^3: Ignore Case when comparing Hash Keys
by roboticus (Chancellor) on Nov 15, 2010 at 19:06 UTC

    avoidcoder:

    I don't advise it, but you could do something like:

    %hash1 = ("John", 43, "Paul", 25, "Marie", 22); %hash2 = ("john", 43, "Paul", 25, "marie", 22); while (($KEY_2, $VALUE_2) = each %hash2){ if (grep { m/$KEY_2/i } keys %hash1) { print "$KEY_2 : Matched\n"; } else{ print "$KEY_2 : Did not match\n"; } }

    Note: Untested, you can keep all the bits when it breaks, etc.

    ...roboticus

      Robotics Thanks. This works in Key Comparison but how do i get the value of the corresponding Key in the if block? Thanks again.

        avidcoder:

        Basically the same way:

        %hash1 = ("John", 43, "Paul", 25, "Marie", 22); %hash2 = ("john", 43, "Paul", 25, "marie", 22); while (($KEY_2, $VALUE_2) = each %hash2){ my @matches = grep { m/$KEY_2/i } keys %hash1; if (@matches) { print "$KEY_2 : Matched ", join(", ", @matches), "\n"; } else{ print "$KEY_2 : Did not match\n"; } }

        ...roboticus

Re^3: Ignore Case when comparing Hash Keys
by moritz (Cardinal) on Nov 15, 2010 at 20:03 UTC
    I cant convert the Hash Keys to lower case, because I want to display the Keys and Values Side by side in the output and I want to keep the original Case of the Keys.

    Then use another hash that maps lower case key to the correctly cased key.

    Also note that the original hash with the correctly cased keys still exists, and stands at your disposal.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (4)
As of 2024-04-25 07:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found