in reply to Unexpected exists() behavior
Nope, supposed to work that way. Yup, can be surprising until you understand why.
See Looping through a hash reference is creating a key...? for a long discussion.