Undef is a value, and one particular unique value, it is not a classification and it has nothing to do with bool/truth hood evaluation. Because its printable form is empty string, undef is false. In some systems, -1 is a "false" too (not in perl). Truthhood has to do with flow control. Undef is best used as a unique flag that can mean, error or no data, to separate empty string/0 from error or no data condition, 0 is valid data some times. Undef can't be stored to a file. Falsehood can be stored to a file.
Using definedness for flow control is one reason why I felt it would be suitable to use in the ternary operator example. I have also seen this used in cgi.pm where the ternary queries if the value is a reference as the method expects and proceeds accordingly.
An example of using undefinedness as a control flow can be seen in this node where I help a fellow monk with identifying and then filling initialised array indexes. Trying to edit HoAoA entries. This does not use ternary condition syntax.
Undef .. and it has nothing to do with bool/truth hood evaluation...
sorry, but you failed to get there :)
By your own explanation undef evaluates to false in boolean contexts, so yes, it has to do with bool/truth hood evaluation -- and it most certainly can be stored to a file