http://qs321.pair.com?node_id=1068575


in reply to Re^2: Difference Between use warnings and use warnings FATAL => 'all'
in thread Difference Between use warnings and use warnings FATAL => 'all'

If an undef in a variable would led you to deleting every row in a database table, it might be better for the uninitialized warning to be fatal.
This is why you put in thorough sanity checks before doing something so destructive:
if (defined $thing) { destroy_database($thing); } else { do_something_else(); }
undef has well-defined semantics in Perl (empty or zero), which are very useful in most cases. You should know when your code may do something catastrophic, and be very careful then, but that's no reason to be paranoid everywhere.