http://www.perlmonks.org?node_id=1151112


in reply to defined defined -- Bug or "Feature"?

perlsyn:

Truth and Falsehood

The number 0, the strings '0' and "" , the empty list (), and undef are all false in a boolean context. All other values are true. Negation of a true value by ! or not returns a special false value. When evaluated as a string it is treated as "", but as a number, it is treated as 0. Most Perl operators that return true or false behave this way.

I'm assuming this is the missing piece of documentation that explains why defined always returns a defined value.