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.