in reply to Search a hash case insensitive

I suggest that you always create a hash-key that consists of (say) lowercased letters.   Then, if necessary, let each hash-element point to an arrayref.   Within each element in that array is the unadulterated key.

So, the hash serves its intended purpose:   now, as you iterate through the array that you have found, you know each one has a nearly-matching key value.