in reply to undef == 0?
That's why it issues a warning. That's more than you'd get in C (truly undefined) or VB (silent conversion to 0).
Which number would you have undef become in numerical context?