Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: Ignore Case when comparing Hash Keys

by ctilmes (Priest)
on Nov 15, 2010 at 19:15 UTC ( #871550=note: print w/replies, xml ) Need Help??


in reply to Ignore Case when comparing Hash Keys

When you transform the keys to lowercase for a case-insensitive lookup, keep the old name around for printing later.
#! /usr/bin/perl %hash1 = ("John", 43, "Paul", 25, "Marie", 22); %hash2 = ("john", 43, "Paul", 25, "marie", 22); my %lc_hash1 = map { lc $_ => { name => $_, value => $hash1{$_} } } keys %hash1; while (($KEY_2, $VALUE_2) = each %hash2){ if (exists $lc_hash1{lc $KEY_2}){ print "$KEY_2 : Matched\n"; } else{ print "$KEY_2 : Did not match\n"; } }
Now you can use $lc_hash1{$SOMEKEY}{name} for the original key and $lc_hash1{$SOMEKEY}{value} for the value.

Replies are listed 'Best First'.
Re^2: Ignore Case when comparing Hash Keys
by ctilmes (Priest) on Nov 15, 2010 at 19:21 UTC
    Or just store the original key as the value of the canonicalized (lower-cased) hash. Look up in the lower case hash to find the key, then use the value of that hash to look up the value in the original hash.
    #! /usr/bin/perl %hash1 = ("John", 43, "Paul", 25, "Marie", 22); %hash2 = ("john", 43, "Paul", 25, "marie", 22); my %lc_hash1 = map { lc $_ => $_ } keys %hash1; while (($KEY_2, $VALUE_2) = each %hash2){ if (exists $lc_hash1{lc $KEY_2}){ print "$KEY_2 : Matched\n"; print "Keys are: $lc_hash1{lc $KEY_2}, $KEY_2\n"; print "Values are: $hash1{$lc_hash1{lc $KEY_2}}, $VALUE_2\n"; } else{ print "$KEY_2 : Did not match\n"; } }
      ctilmes --- Thanks a lot. This works great!!! Just the way I want it to. You saved me a ton of time. Thankyou all.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://871550]
help
Chatterbox?
[stevieb]: I've finally added the ability for berrybrew to fetch the list of perls available directly from Strawberry's releases.json file. Instead of pulling from there on every single call, I've added a berrybrew fetch, so it's only updated..
[stevieb]: ...on request. There's some supporting work I need to do, as well as update the docs, but it's in the v1.12 branch if anyone wants to play with it...
[stevieb]: ...issue 62 will track what else needs to be done.

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (5)
As of 2017-03-31 01:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Should Pluto Get Its Planethood Back?



    Results (364 votes). Check out past polls.