У меня есть простая форма опроса, в которой я использую Perl CGI, поэтому никаких интерактивных HTML-документов не будет использоваться. Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как определить, какая кнопка отправки нажата, и если да, переходите к следующему вопросу или переходите к предыдущему вопросу. Я установил значения для кнопок, но я не уверен, как использовать это значение, чтобы перейти к следующему вопросу. (. Я довольно новое в Perl CGI, пожалуйста, простите за неряшливый код спасибо)Кнопки отправки программ в Perl Cgi
#!c:/Perl/bin/perl.exe
use CGI;
use CGI::Carp qw(fatalsToBrowser);
if ($ENV{'REQUEST_METHOD'} eq "POST") {
$form_size = $ENV{'CONTENT_LENGTH'};
read(STDIN, $form_data, $form_size);
} else {
$form_data = $ENV{'QUERY_STRING'};
}
$form_data =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg;
@fields = (split(/&/, $form_data));
$size = @fields;
for ($i = 0; $i < $size; $i++) {
($key, $value) = (split(/=/, $fields[$i]));
$value =~ s/[;<>\(\)\{\}\*\|'`\&\$!#:"\\]/\ /g; # Syntax Highlighting fix: '
$value =~ s/[+]/\ /g;
$my_hash{$key} = $value;
}
my $q = new CGI;
print $q->header("text/html"), $q->start_html(-title => "Survey", -bgcolor => "blue");
@labels = ("Not at all", "", "Somewhat", "", "Extremely");
@labels2 = ("No", "Yes", "N/A");
print $q->submit('prev_button', 'Prev');
print $q->submit('next_button', 'Next', 'Javascript: validate_form()');
if (submit . value == Prev) {
if ($size == 0) {
$size = 0;
} else {
$size = $size - 1;
}
} elsif (submit . value == Next) {
if ($size == 6) {
$size = 6;
} else {
$size + 1;
}
}
if ($size == 0) {
print $q->p("1. Please enter your name:");
print $q->textfield('q1', '', 50, 80);
} elsif ($size == 1) {
print $q->p("2. Did you find the information included within this web site useful?");
print $q->radio_group('q2', [ '1', '2', '3', '4', '5' ], "-", 'false', \%labels);
} elsif ($size == 2) {
print $q->p("3. Is the web site easy to navigate?");
print $q->radio_group('q3', [ '1', '2', '3', '4', '5' ], "-", 'false', \%labels);
} elsif ($size == 3) {
print $q->p("4. Were you able to find the information you were looking for?");
print $q->radio_group('q4', [ '1', '2', '0' ], "-", 'false', \%labels2);
} elsif ($size == 4) {
print $q->p("5. What other information would you like to be included in the web site?");
print $q->textarea('q5', '', 10, 50);
} elsif ($size == 5) {
print $q->p("6. What suggestions you might have for our website improvement?");
print $q->textarea('q5', '', 10, 50);
} elsif ($size == 6) {
print $q->p("Thank you for your input.");
}
print $q->end_html;
exit(0);
'представить. value' не является синтаксисом Perl. – choroba
Вы должны добавить 'use strict; использовать предупреждения, 'на вершине вашего скрипта и на каждый скрипт Perl, который вы когда-либо писали; они могут помочь поймать множество простых ошибок. См. [Зачем использовать строгие предупреждения и предупреждения?] (Http://stackoverflow.com/questions/8023959/why-use-strict-and-warnings) для деталей. – ThisSuitIsBlackNot
Wow Большое спасибо. Я довольно новичок в языке, и требования делают его еще более сложным, потому что я не могу использовать Javascript и снова, как вы сказали, это мертвый язык. У меня есть еще несколько вопросов относительно этого кода. Хотя я установил ограничения на переменную $ size, как мне получить форму для создания следующего вопроса в моем вложенном операторе If в cluck кнопки отправки? Похоже, это должно быть относительно просто, но я застреваю. – user3600460