Иллюстрированный самоучитель по Perl

Вопросы и Упражнения

Вопросы для самоконтроля

  1. Что обозначает аббревиатура CGI?
  2. Что такое Web-сервер?
  3. Что такое клиент Web-сервера?
  4. Для чего нужна HTML-форма?
  5. Какую первую строку должна выводить CGI-программа?
  6. Какие методы передачи данных формы Web-серверу вы знаете? В чем их особенности?
  7. Перечислите элементы управления, которые может содержать форма.
  8. Как кодируется информация, передаваемая CGI-программе?
  9. В чем заключается специфика CGI-сценариев?
  10. Каким образом CGI-программа имеет доступ к переменным среды CGI?
  11. Какая информация содержится в переменной среды QUERY_STRING?
  12. Для чего предназначен модуль CGI.pm?

Упражнения

  1. Запишите текст примера 15.8 в обозначениях, использующих объектно-ориентированный интерфейс с модулем CGI.
  2. Используя модуль CGI, дополните пример 15.8 кодом, осуществляющим проверку введенных данных, как это сделано в примере 15.7.
  3. Ниже приведены тексты трех примеров, входящих в отдельный дистрибутив модуля CGI.pm. Разберите, что делают эти сценарии.
  • a) clickable_image.cgi
#!/usr/bin/perl
use CGI;
$query = new CGI;
print $query › header;
print $query › start__html("A Clickable Image");
print "END;
<H1>A Clickable Image</H1>
</A> /
END |
print "Sorry, this isn't very exciting!\n";
print $query › startform;
print $query › image_button('picture',"./wilogo.gif");
print "Give me a: ", $query › popup_rnenu ('letter',
['A', 'B', 'C', 'D', 'E', 'W]),"\n";
 print "<P>Magnification: ", $query › radio_group('magnification',
['IX', '2X',MX','20X']),"\n"; print "<HR>\n";
if ($query › param) <strong>{</strong>
print "<P>Magnification, <EM>",$query › param('magnification'),
"</EM>\n";
print "<P>Selected Letter, <EM>",$query › param('letter'),"</EM>\n";
 ($x,$y) = ($query › param('picture.x'),$query › param('picture.y'));
 print "<P>Selected Position <EM>($x,$y)</EM>\n";
}
print $query › end_html;
  • б) quadraphobia.cgi
#!/usr/bin/perl use CGI qw/:standard/; print header,
start_html('QuadraPhobia'),
hi('QuadraPhobia'),
start_form(),
image_button(-name › 'square',
-src › 'red_square.gif,
-width › 200,
-height › 200,
-align › MIDDLE),
end_form(); if (paramO) {
($x,$y) = (param('square.x'),param('square.у'));
$pos = 'top-left' if $x < 100 && $y < 100;
$pos = 'top-right' if $x >= 100 && $y < 100;
$pos = 'bottom-left' if $x < 100 && $y >= 100;
$pos = 'bottom-right' if $x >= 100 && $y >= 100;
print b("You clicked on the $pos part of the square."); }
print p,a({href › '../source.html'},"Code examples"); print end_html ();
  • в) popup.cgi
#!/usr/local/bin/perl
use CGI;
$query = new CGI;
print $query › header;
print $query › start_html('Popup Window');
if (!$query › param) {
print "<Hl>Ask your Question</Hl>\n";
print $query › startform(-target › '_new');
print "What's your name? ",$query › textfield('name');.
print "<P>What's the corobination?<P>",
$query › checkbox_group(-name › 'words',
-values › ['eenie','meenie','minie','moe'],
-defaults › ['eenie','moe']);
print "<P>What's your favorite color? ", $query › popup_menu(-name › 'color',
-values › ['red','green','blue','chartreuse']), "<P>";
print $query › submit; print $query › endform;
} else {
print "<H1>And the Answer is…</H1>\n";
print "Your name is <EM>",$query › param(name),"</EM>\n";
print "<P>The keywords are: <EM>",
join(", ",$query › param(words)),"</EM>\n"; print "<P>Your favorite color is <EM>",
$query › param{color),"</EM>\n";
}
print qq{<P><A HREF="cgi_docs.html">Go to the documentation</A>};
print $query › end_html;
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.