in reply to calling a sub from an if statement

Tried you suggestions, to no avail. Here's all the code, incase something else is causing the problem:
#!/usr/local/bin/perl # this is the code for sever.pl, my mini-server my @lines; open(FILE1, $ARGV[0]); while (<FILE1>) { push(@lines, $_); } ($method, $url, $proto) = split(/ /, $lines[0]); if ($method ne "GET") { if ($method ne "POST") { msg(400); } } if ($proto ne "HTTP/1.0") { msg(400); #here's where sub msg doesn't work } if ($method eq "POST") { open(FILE2, $ARGV[1]); while (<FILE2>) { $ENV{'REQUEST_QUERYSTRING'} = $_; } print "the querystring is: $ENV{'REQUEST_QUERYSTRING'}\n"; @q_string = split (/&/, $ENV{'REQUEST_QUERYSTRING'}); foreach $pair (@q_string) { my @temp = split (/=/, $pair); $param{$temp[0]} = $temp[1]; print "$temp[0] = $param{$temp[0]}\n"; } } %msgs = ("200", "OK", "400", "Bad Request", "403", "Forbidden", "404", + "Not Found", "500", "Internal Server Error"); msg(400); #here's where sub msg works sub msg { $msg_num = @_[0]; $msg_txt = "$msg_num $msgs{$msg_num}"; print "HTTP/1.0 $msg_txt\n"; }
and here's the file I'm passing to server.pl:
> more badreq.txt GET /index.html HTTP/1.1
and here's my output:
> ./server.pl badreq2.txt HTTP/1.0 400 HTTP/1.0 400 Bad Request
What do you think? Thanks!

Replies are listed 'Best First'.
RE: Re: calling a sub from an if statement
by steveAZ98 (Monk) on Jul 24, 2000 at 00:01 UTC
    Ahh.. the problem is that your hash isn't defined yet when you call msg in the if statement, but it is defined when you call it later on in the program. %msgs has to be defined before any calls to msg()