I'm having problems with my error handling. It's kind of hard to explain so I'll just post my code and bold where the error handling is and then explain what is happening.
Just to warn you, I am new to Perl so the code probably will be ugly!
So, the problem lies with the error handling. On the first page, I have the user enter the number of elements they want to be added together and averaged. Then, I have some error handling that checks to see if the user entered something. If they didn't, then it displays "Invalid number of elements!". Else, it calls page2. In page2, I have a for loop that displays the number of textboxes needed for the user to enter the elements. Here, when they hit submit after entering in the elements, it shows the "Invalid number of elements!" error again and I don't know why. I'm assuming it has something to do with the previous error handling, but I don't know how to fix it.
Just to warn you, I am new to Perl so the code probably will be ugly!
Code:
#! /usr/local/bin/perl
BEGIN
{
open(STDERR, ">&STDOUT");
select(STDERR); $| = 1;
select(STDOUT); $| = 1;
print "Content-type: text/html\n\n";
}
if($ENV{'QUERY_STRING'} eq "")
{
&page1;
exit;
}
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
if($buffer eq "")
{
$buffer = $ENV{'QUERY_STRING'};
}
@pairs = split(/&/, $buffer);
foreach $pair(@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
if($FORM{$name} eq "")
{
$FORM{$name} = $value;
}
else
{
$FORM{$name} .= " " . $value;
}
}
print <<ENDHTML;
<HTML>
<HEAD>
<TITLE>Assignment #4</TITLE>
</HEAD>
<BODY text="white" bgcolor="blue">
<FONT face="arial" size="4">
<DIV align="center">
<br>
ENDHTML
sub page1
{
print <<ENDHTML;
<HTML>
<HEAD>
<TITLE>Assignment #4</TITLE>
</HEAD>
<BODY text="white" bgcolor="blue">
<FONT face="arial" size="4">
<DIV align="center">
<br>
<FORM METHOD=GET ACTION="http://cs.sunyit.edu/~westj2/cgi-bin/assignment4.pl/page2">
Enter number of elements to add and average: 
<input type="text" name="numelements" value="" maxlength="7"><br><br>
<input type="submit" name="submit" value="Submit">  
<input type="reset">
</FORM>
</DIV>
</FONT>
</BODY>
</HTML>
ENDHTML
}
[B]if($FORM{'numelements'} eq "")
{
print "Invalid number of elements!";
}
else
{
&page2;
}[/B]
sub page2
{
print <<ENDHTML;
<FORM METHOD=GET ACTION="http://cs.sunyit.edu/~westj2/cgi-bin/assignment4.pl/page3>
ENDHTML
$elements = $FORM{'numelements'};
for($i = 0; $i <= $elements; $i++)
{
print "Enter number $i: ";
print q{<input type="text" name="numelements" maxlength="7"><br>};
}
print <<ENDHTML;
<HTML>
<HEAD>
<TITLE>Assignment #4</TITLE>
</HEAD>
<BODY text="white" bgcolor="blue">
<FONT face="arial" size="4">
<DIV align="center">
<br>
<input type="submit" name="submit" value="Submit">  
<input type="reset">
</FORM>
</DIV>
</FONT>
</BODY>
</HTML>
ENDHTML
}
#if($FORM{'elements'} eq "")
#{
# print "Invalid number of elements!";
#}
#else
#{
# &page3
#}
sub page3
{
print <<ENDHTML;
<HTML>
<HEAD>
<TITLE>Assignment #4</TITLE>
</HEAD>
<BODY text="white" bgcolor="blue">
<FONT face="arial" size="4">
<DIV align="center">
<br>
ENDHTML
print test;
}
Comment