in reply to Checking for empty CGI params; this isn't working

You're checking the length of the result of an 'or' between two calls to the param() sub. There is no context in your post, but I don't think that's what you want. Look closely at how your parentheses match up:
(param('tele') || param('mobile'))

Do you want, instead, to check that one (or both) of the params "mobile" and "tele" are at least one character long?

If so, try this:

elsif( length(param('tele')) || length(param('mobile')) )
If not, please ask again, but be clear in your question what it is that you're looking for, and exactly how the code you have so far is not doing what you want. (For more on this, have a look at How do I post a question effectively?) It is difficult to tell what you're trying to ask, here.

Welcome to the Monastery, andrew - I hope you find what you're looking for here.

Replies are listed 'Best First'.
Re: Re: Checking for empty CGI params; this isn't working
by andrew (Acolyte) on Jul 14, 2002 at 17:54 UTC
    I want to check to see if either telephone or mobile is entered, only one has to be entered to get through and your last post did not work
    elsif( length(param('tele')) || length(param('mobile')) ) { error("You need to enter either a telephone or a mobile"); }
      I don't write a lot of CGI programs, so I'm not going to be an authority on use of the param() function -- but it may be complicating that line more than necessary. I'm guessing that you call it on these two fields at least twice - once (here) to see if its empty, and again later to use it.

      You may want to take that out of the question by assigning each to a scalar value. Then this works:

      my $tele = ''; my $mobile = ''; # uncomment to pass # $tele = 'hello'; if( length($tele) || length($mobile) ){ print 'At least one is OK'; } else { print 'both are empty'; }