in reply to defined defined -- Bug or "Feature"?
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.