'argument isn't numeric' error in CGI script

2002-02-15 Thread Jim Witte

Hi,

   I'm running Apache on a MacOS X (10.1.2) box in IP-loopback mode, and 
I'm experiementing with a CGI script that acts like a state-machine.  I 
cooked up the example at the bottom of the page.  If I run it as is, it 
runs fine.  But if I comment out line 48, which tells &action1 to exit 
when it finishes, the browser displays this message, after which it 
executes &action2 (correctly):

t2.pl: Argument "action2" isn't numeric in numeric eq (==) at  line 16.

   What does this mean, and why does it only show up if the exit() 
statment is commented?  If I run it at the command line, it runs fine, 
exept it tells me that &action1 and &action2 are called too early to 
check their prototypes (which I expected). If I change the quotes in 
lines 14 and 16 to double-quotes, it sill exibits the same behavior.

Thanks,
Jim Witte
[EMAIL PROTECTED]


#!/usr/bin/perl
use CGI qw(:standard);
use diagnostics;
use CGI::Carp qw(fatalsToBrowser);
BEGIN {
  use CGI::Carp qw(carpout);
  carpout(STDOUT);
}
$commname = param('commname');
if (!$commname) {
dostart(); }
if ($commname == 'action1')  {
action1(); }
if ($commname == 'action2') {   line 16
action2(); }

sub dostart()
{
print header;
print start_html('A Simple Example'),
h1('A Simple Example'),
start_form,
"What's your name [dostart]? ",textfield('name'),
submit('commname', 'action1'),
end_form,
end_html;
exit();
}

sub action1()
{
print header,
start_html('Action 1 completion'),
"[action1] Your name is ", em(param('name')),
p,
end_html;
exit();   line 48 
}

sub action2()
{
print header,
start_html('Action 2 completion'),
"[action2] Your name is ", em(param('name')),
p,
end_html;
}



Re: 'argument isn't numeric' error in CGI script

2002-02-15 Thread John W. Krahn

Jim Witte wrote:
> 
> Hi,
> 
>I'm running Apache on a MacOS X (10.1.2) box in IP-loopback mode, and
> I'm experiementing with a CGI script that acts like a state-machine.  I
> cooked up the example at the bottom of the page.  If I run it as is, it
> runs fine.  But if I comment out line 48, which tells &action1 to exit
> when it finishes, the browser displays this message, after which it
> executes &action2 (correctly):
> 
> t2.pl: Argument "action2" isn't numeric in numeric eq (==) at  path> line 16.
> 
>What does this mean,

It means that the string "action2" is not a number but you are using the
numeric equality (==) operator instead of eq.

> and why does it only show up if the exit() statment is commented?
> If I run it at the command line, it runs fine,
> exept it tells me that &action1 and &action2 are called too early to
> check their prototypes (which I expected). If I change the quotes in
> lines 14 and 16 to double-quotes, it sill exibits the same behavior.
> 
> 
> #!/usr/bin/perl
> use CGI qw(:standard);
> use diagnostics;
> use CGI::Carp qw(fatalsToBrowser);
> BEGIN {
>   use CGI::Carp qw(carpout);
>   carpout(STDOUT);
> }
> $commname = param('commname');
> if (!$commname) {
> dostart(); }
> if ($commname == 'action1')  {
^^
eq

> action1(); }
> if ($commname == 'action2') {   line 16
^^
eq

> action2(); }
> 
> [snip code]






John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]