Perl 错误消息";全球符号。。。需要明确的包名;多行

Perl 错误消息";全球符号。。。需要明确的包名;多行,perl,Perl,我的代码有问题。出于某种奇怪的原因,它会生成错误消息,如 全局符号“$plan3”需要显式的包名 在多行上输入多个变量 #!/usr/bin/perl print "Content-type: text/html\n\n"; use CGI qw(:standard); use CGI::Carp qw(warningsToBrowser fatalsToBrowser); use strict; my $recipient = 'email@myemail.com'; my $fir

我的代码有问题。出于某种奇怪的原因,它会生成错误消息,如

全局符号“$plan3”需要显式的包名

在多行上输入多个变量

#!/usr/bin/perl

print "Content-type: text/html\n\n";

use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);

use strict;

my $recipient = 'email@myemail.com';

my $firstname, $lastname, $emailaddress, $paymentplan, $pricipalamount;
my $errors, $fn1, $lnl2, $ea3, $pp4, $pa5;
my $paymentamount;
my $email;

my $plan1 = 24, $plan2 = 48, $plan3 = 60;
my $month;

$firstname    = param( "firstname" );
$lastname     = param( "lastname" );
$emailaddress = param( "emailaddress" );
$paymentplan  = param( "paymentplan" );

$month           = param( "paymentplan" );
$principalamount = param( "principalamount" );
$errors          = 0;
$fn              = 0;
$ln              = 0;
$ea              = 0;
$pp              = 0;
$pa              = 0;

if ( $paymentplan == 1 ) {
    $paymentplan = $plan1;
}

if ( $paymentplan == 2 ) {
    $paymentplan = $plan2;
}

if ( $paymentplan == 3 ) {
    $paymentplan = $plan3;
}

$paymount = ( $amount * 1.14 ) / ( $plan - 2 );

$email = "Welcome to the CSIT Loan Company, $firstname $lastname! \n\n  Your 
email address is: $emailaddress \n  Your payment plan number is #$month \n  
Your Prinicpal Amount is \$  $principalamount \n  And your total is 
\$$paymentamount! \n\n  Thank you very much!";

if ( index( $address, "@" ) == -1 ) {
    print "Please use an @ sign!";
    $errors = 1;
}

if ( $firstname eq "" ) {
    $fn     = 1;
    $errors = 1;
}

if ( $lastname eq "" ) {
    $ln     = 1;
    $errors = 1;
}

if ( $emailaddress eq "" ) {
    $ea     = 1;
    $errors = 1;
}

if ( $paymemtplan ne "24" && $paymentplan ne "48" && $paymentplan ne "60" ) {
    $pp     = 1;
    $errors = 1;
}

if ( $principalamount < "5000" || $principalamount > "50000" ) {
    $pa     = 1;
    $errors = 1;
}

if ( $errors == 0 ) {

    print MAIL "To: $recipient\n";
    print MAIL "From:apmycs2\n";
    print MAIL "Subject:Server Validation\n\n";

    print MAIL $email;

    close( MAIL );
    print "Success! this is an email to notify of successful validation";
}
else {

    if ( $fn == 1 ) {
        print "<br>Please Enter your First Name!<br>";
    }

    if ( $ln == 1 ) {
        print "<br>Please Enter your Last Name!<br>";
    }

    if ( $ea == 1 ) {
        print "<br>Please Enter a valid Email Address!<br>";
    }

    if ( $pp == 1 ) {
        print "<br>Please Enter a Payment Plan of 1, 2, or 3!<br>";
    }

    if ( $pa == 1 ) {
        print "<br>Please Enter a Principal Amount between 5000 and 50000!<br>";
    }
}

print "<br><p>Thank you!<p>";
#/usr/bin/perl
打印“内容类型:text/html\n\n”;
使用CGI qw(:标准);
使用CGI::Carp qw(警告浏览者fatalsToBrowser);
严格使用;
我的$1email@myemail.com';
我的$firstname、$lastname、$emailaddress、$paymentplan、$pricipalamount;
我的$errors、$fn1、$lnl2、$ea3、$pp4、$pa5;
我的$paymentamount;
我的$email;
我的$plan1=24,$plan2=48,$plan3=60;
我的$month;
$firstname=param(“firstname”);
$lastname=param(“lastname”);
$emailaddress=param(“emailaddress”);
$paymentplan=param(“paymentplan”);
$month=param(“付款计划”);
$principalamount=param(“principalamount”);
$errors=0;
$fn=0;
$ln=0;
$ea=0;
$pp=0;
$pa=0;
如果($paymentplan==1){
$paymentplan=$plan1;
}
如果($paymentplan==2){
$paymentplan=$plan2;
}
如果($paymentplan==3){
$paymentplan=$plan3;
}
$paymount=($amount*1.14)/($plan-2);
$email=“欢迎来到CSIT贷款公司,$firstname$lastname!\n\n您的
电子邮件地址为:$emailaddress\n您的付款计划编号为#$month\n
您的主要金额为\$$principalamount\n,您的总金额为
\$$paymentamount!\n\n非常感谢;
如果(索引($address,“@”)=-1){
打印“请使用@符号!”;
$errors=1;
}
如果($firstname eq“”){
$fn=1;
$errors=1;
}
如果($lastname eq“”){
$ln=1;
$errors=1;
}
如果($emailaddress eq“”){
$ea=1;
$errors=1;
}
if($paymentplan ne“24”和$paymentplan ne“48”和$paymentplan ne“60”){
$pp=1;
$errors=1;
}
如果($principalamount<“5000”|$principalamount>“50000”){
$pa=1;
$errors=1;
}
如果($errors==0){
打印邮件“收件人:$recipient\n”;
打印邮件“发件人:apmycs2\n”;
打印邮件“主题:服务器验证\n\n”;
打印邮件和电子邮件;
关闭(邮件);
打印“成功!这是通知成功验证的电子邮件”;
}
否则{
如果($fn==1){
打印“
请输入您的名字!
”; } 如果($ln==1){ 打印“
请输入您的姓氏!
”; } 如果($ea==1){ 打印“
请输入有效的电子邮件地址!
”; } 如果($pp==1){ 打印“
请输入1、2或3的付款计划!
”; } 如果($pa==1){ 打印“
请输入5000到50000之间的本金金额!
”; } } 打印“
谢谢!”;
Perl希望您进行列表赋值,以同时声明多个变量:

 my( $plan1, $plan2, $plan3 ) = ( 24, 48, 60 );
否则,逗号运算符基本上会尝试这样做,
my
仅适用于第一个:

 (my $plan1 = 24), ($plan2 = 48), ($plan3 = 60);
但是,你可能想要一些更容易管理的东西。您可以创建不随计划数量变化的代码:

 my @payment_plans = ( undef, 24, 48, 60 );
 my $payment_plan_input = param( 'paymentplan' );
 my $fee;
 if( 1 <= $payment_plan_input and $payment_plan_input <= $#payment_plans ) {
      $fee = $payment_plans[ $payment_plan_input ];
      }

要声明多个变量,
my($a,$b,$c)
而不是
my$a,$b,$c
。这是Perl,不是C。
 my %payment_plan_fees = (
      basic  => 24,
      medium => 48,
      deluxe => 60,
      );

 my $payment_plan_input = param( 'paymentplan' );
 die "Bad input!" unless exists $payment_plan_fees{$payment_plan_input};
 my $fee = $payment_plan_fees{ $payment_plan_input };