Bob Showalter wrote: > Siegfried Heintze wrote: > > How do I distinguish between no value and false? I thought defined > > was supposed to do that. > > > > So if I call $q->param("xyz"), how do I distinguish between > > &xyz=0&abc and &xyz=&abc and xyz being absent all together? > > param() will return undef in scalar context, or an empty list in list > context if the parameter is totally absent. > > So if the query string is 'xyz=0&abc', param('xyz') will return '0'. > > If the query string is 'xyz=&abc', param('xyz') will return ''. > > If the query string is 'abc=foo', param('xyz') will return undef (in > scalar context) > > So, you can do something like: > > my $xyz = param('xyz'); > if (defined $xyz) { > print "parameter xyz was present. it's value is [$xyz]\n"; > }
I should add that if this is coming from a form submission and they've left the field blank, you can't test for that with defined(). You need to test for whatever you consider a blank field to be. I often do something like this: die "You must enter an id\n" unless $q->param('id') =~ /\S/; That will die if they leave the field blank or just put whitespace in it. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>