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 <file
path> 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;
}