Ron Smith wrote:
Hi all,

I get the error: "Undefined subroutine &Main::BadData called at line 42" when
executing the following '.cgi' script, with nothing entered in all of the
text fields. I'm unfamiliar with this error.

Could someone give me an explaination behind this error?

Here's the code:

use strict;
use warnings;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);

print header(), start_html("Which Triangle Is It?");

print p("This page tells you what type of triangle you've entered."), br(),
  "A triangle with each side being equal is equilateral.", br(),
  "A triangle with two sides being equal is an isosceles triangle.", br(),
  "A right triangle is one where the square of one side is equal to", br(),
  "the sum of the squares of the other two sides.",
br();
print br();
print '<FORM method="post"
action="pg250ex7.7_whichTriangle.pl">';
print '<TABLE bgcolor="lightblue">';
print Tr( td("Enter length of first side: "),
td('<INPUT type="text" name="side1">') );
print Tr( td("Enter length of second side: "),
td('<INPUT type="text" name="side2">') );
print Tr( td("Enter length of third side: "),
td('<INPUT type="text" name="side3">') );
print Tr( td('<INPUT type="reset" value="Clear">'),
td('<INPUT type="submit" value="Submit">') );
print "</TABLE></FORM>";

my $firstSide = param("side1");
my $secondSide = param("side2");
my $thirdSide = param("side3");

if ($firstSide =~ /^(\d+)$/) {
    $firstSide = $1;
    if ($secondSide =~ /^(\d+)$/) {
        $secondSide = $1;
        if ($thirdSide =~ /^(\d+)$/) {
            $thirdSide = $1;
            if ($firstSide == $secondSide && $firstSide == $thirdSide) {
                print p("That's an equilateral triangle!\n");
            } elsif ($firstSide == $secondSide || $firstSide == $thirdSide || 
$secondSide == $thirdSide) {
                print p("That's an Isosceles triangle!\n");
            }
        }
    }
} else {
    BadData();
}

sub BadInput {
    print p("Please, enter numbers only!");
    die "Click the \"Clear\" button and try again.\n";
}

print end_html();

TIA,


Hi Ron.

It should say "Undefined subroutine &main::BadData ..." (with a lower case 'm') as the current package is 'main' unless you specify another one. It's saying that there's no BadData() subroutine defined in your code. And indeed there isn't, because you've called it BadInput()!

HTH,

Rob

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to