Это моя первая попытка CGI (я знаю немного Perl), но я падаю на лицо.
Я хочу ввести форму и проверить ее, но в разделе проверки вообще не отображаются отправленные значения.
Я запускаю это напрямую как http://example/cgi-bin/formcheck.cgi
- нет HTML, вызывающего это.
Я подозреваю, что он работает, опуская дно, а затем работает с нуля при каждом нажатии кнопки. Я не уверен, хотя. Вот мой код:
#!/usr/bin/perl -w
use strict; # let's tighten things up
use CGI ':standard';
use CGI::Carp qw(fatalsToBrowser);
print header;
print start_html("form check");
print "<h1>form check</h1>\n";
print_questions();
print_checks();
print "<hr>\n";
print end_html;
sub print_questions {
if ( !defined(param('action')) || param('action') eq 'New' ) {
my $p = int(rand(10)); # fix error under strict
my $q = int(rand(10)); # fix error under strict
my $i = 0; # fix error under strict
my @question = ''; # fix error under strict
my @answer = ''; # fix error under strict
$question[$i] = "$p X $q =";
$answer[$i] = $p * $q;
print start_form;
print "$question[$i]";
print textfield(-name=>'response',-default=>'',-size=>3);
print "<p>";
print submit('action','New');
print submit('action','Check');
print end_form;
print "<p>";
param(-name=>'question',-value=>@question);
param(-name=>'answer',-value=>@answer);
print "<hr>\n";
}
}
sub print_checks {
if ( param('action') eq 'Check' ) {
my $errors = 0; # fix error under strict
my $i = 0; # fix error under strict
my @question = param('question'); # fix error under strict
my @answer = param('answer'); # fix error under strict
my @response = param('response'); # fix error under strict
if ( $answer[$i] != $response[$i] ) {
$errors++;
print "<font color=#FF0000>";
} else {
print "<font color=#00FF00>";
}
print "$question[$i] = $answer[$i]";
print "</font>";
print "<p>";
print start_form;
print submit('action','New');
print end_form;
print "<p>";
print "<hr>\n";
if ($errors == 0) {
print "CORRECT!<br>";
} else {
print "NOPE!<br>";
}
}
}
Любая помощь с благодарностью