On Sunday 06 December 2009 10:24:31 am Adam Jimerson wrote: > I am working on a registration page and there for want it to show the > user errors it has found with their input. I have two subroutines in > my code, the first one prints out the form, also takes an array with > error descriptions that is passed by the other subroutine. The other > subroutine takes the user input and verifies it, any errors that it > finds it pushes into an array called @errors and passes that back to > the first subroutine. The problem is it doesn't work right when I > run it from the command line this is what I get: > > vend...@seserver:~/public_html/AmeriVista> perl -cT register.cgi > [Sun Dec 6 14:12:12 2009] register.cgi: Illegal character in > prototype for main::form_verify : @user at register.cgi line 43. > [Sun Dec 6 14:12:12 2009] register.cgi: Scalar found where operator > expected at register.cgi line 93, near "$user" > [Sun Dec 6 14:12:12 2009] register.cgi: (Missing semicolon on > previous line?) > [Sun Dec 6 14:12:12 2009] register.cgi: main::form_verify() called > too early to check prototype at register.cgi line 36. > Content-type: text/html > > <h1>Software error:</h1> > <pre>syntax error at register.cgi line 93, near "$user" > Global symbol "$GoodMail" requires explicit package name at > register.cgi line 93. > register.cgi had compilation errors. > </pre> > <p> > For help, please send mail to this site's webmaster, giving this error > message > and the time and date of the error. > > </p> > [Sun Dec 6 14:12:12 2009] register.cgi: syntax error at register.cgi > line 93, near "$user" > [Sun Dec 6 14:12:12 2009] register.cgi: Global symbol "$GoodMail" > requires explicit package name at register.cgi line 93. > [Sun Dec 6 14:12:12 2009] register.cgi: register.cgi had compilation > errors. > > I have attached my code for the script, if someone could look at it > and give some ideas as to how to make this work or a better way then > please do
You are trying to use a local scoped var as a global , line 93 $GoodMail is used out of its scope , if ( $user[5] =~ /^([...@\w.]+)$/ ) { $user[5] = $1; eval { my $GoodMail = Email::Valid->address( -address => "$user[5]", -mxcheck => 1); return; } #push @errors, "<p>Error: Double check your email address</p>" if $@; $user[5] = $GoodMail; } it should read if ( $user[5] =~ /^([...@\w.]+)$/ ) { my $GoodMail ; $user[5] = $1; eval { $GoodMail = Email::Valid->address( -address => "$user[5]", -mxcheck => 1); return; } #push @errors, "<p>Error: Double check your email address</p>" if $@; $user[5] = $GoodMail; } or even declare it up with the other globals if you want , but the way you have it now it is out of scope after that eval { } block completes. there may be other errors , fix that one first and try it again and see what else pops up. have fun Greg -- To unsubscribe, e-mail: beginners-cgi-unsubscr...@perl.org For additional commands, e-mail: beginners-cgi-h...@perl.org http://learn.perl.org/