in reply to hash defined?
I simply use defined(). If the key does not exist in the hash, the result is undef. If the key does exist and its present value is undef, the result will be the same. “It's what I want” in either case: although the cases are distinct, I don't have to care.