Hmmm... You are right. I have edited my earlier post to correct the misinformation.
It seems that I had confused Perl, SQL, and Lisp while writing that. As I recall, there is only one undef value in perl, and DBI (see also DBI recipes) maps SQL NULL and Perl undef. Here are the tests I ran before writing that post:
$ perl -we 'print "T\n" if "foo" eq "foo"' T
$ perl -we 'print "T\n" if undef eq "foo"' Use of uninitialized value in string eq at -e line 1.
$ perl -we 'print "T\n" if undef eq undef' Use of uninitialized value in string eq at -e line 1. Use of uninitialized value in string eq at -e line 1. T
Spotted the missing test yet? Try:
$ perl -we 'print "T\n" if undef eq ""' Use of uninitialized value in string eq at -e line 1. T
Since the message specifically mentions use of undef in eq, I had assumed that eq actually sees the undefined value, instead of stringifying it like any other value. Wrong!
In reply to Re^3: The error says the value is uninitialized, but it works anyway
by jcb
in thread The error says the value is uninitialized, but it works anyway
by mizducky
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |