in reply to Re^2: String equality and undef
in thread String equality and undef

if( $foo ){ ... }

You cannot do this as the value returned may be 0 or the empty string both of which are not true:

perl -e 'use DBI;$h = DBI->connect("dbi:ODBC:xxx","xxx","xxx");eval {$ +h->do("drop table mje")};$h->do("create table mje (a int null)");$s = + $h->prepare("insert into mje values(?)");$s->execute(0);$s->execute( +undef);$r = $h->selectall_arrayref("select * from mje");foreach (@$r) +{print "$_->[0]\n" if $_->[0];}'

prints exactly nothing. You need to use defined. You may also find the following useful http://www.easysoft.com/developer/languages/perl/dbd_odbc_tutorial_part_2.html#nulls.