in reply to String equality and undef

Test the value before use

perldoc -f defined

Replies are listed 'Best First'.
Re^2: String equality and undef
by Anonymous Monk on Dec 09, 2008 at 12:25 UTC
      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.