http://qs1969.pair.com?node_id=871550


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.