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?