in reply to Test Presence of Data in Hash
This doesn't address the interesting questions you've raised about hashes. I'm sure that others will have good explanations of that, but I just wanted to point out that the best way to check if a hash contains any data is to use the keys function. In scalar context keys will return the number of keys defined in the hash.
In Section
Seekers of Perl Wisdom