in reply to Warnings not being thrown with DBI
It is the design decision for DBI module, to use Perl undef to represent SQL NULL. You need something to represent SQL NULL in Perl, and I do see undef as a reasonable choice for that matter.