Анимация
JavaScript
|
Главная Библионтека Теперь заполните поле Please select а flavor, нажмите клавишу [Enter], и вы увидите то, что показано на рис. 19.3. Netscape - [Hello Ice Cieam] File Edit View J20 gookmeiks filption* >Q«ectajl-lndo№ НФ
Go lo [•P www p?rl.conr./cgi-bin/icf crf ЭП Hello Ice Cream Your favorite flavor is mint. JCl:M (ОоситепГбопа Рис. 19.3. Результат обработки переданного с использованием формы запроса Другие компоненты формы Теперь, когда вы знаете, как создавать в форме простые текстовые поля и заполнять их, вам, наверное, интересно будет узнать, как создавать компоненты формы других типов - кнопки, отмечаемые блоки и меню. Сейчас мы рассмотрим более развитую версию нашей программы. В частности, мы включили в нее новые компоненты формы: всплывающие меню, кнопку передачи (которая называется order) и кнопку очистки полей формы, позволяющую стереть все данные, введенные пользователем. Всплывающие меню делают именно то, о чем говорят их имена, но аргументы, указанные в popup menu, могут озадачить вас - пока вы не прочитаете следующий раздел, "Ссылки". Функция textfieldO создает поле для ввода текста с указанным именем. Подробнее об этой функции мы расскажем ниже, когда будем описывать программу гостевой книги. #!/usr/local/bin/perl5 -w # программа ответа на форму заказа мороженого и генерирования этой формы use strict; # ввести объявления переменных и выполнить заключение в кавычки use CGI qw(:standard); (версия 4) print header; print start html("Ice Cream Stand"), hi("Ice Cream Stand"); if (paramO) ( # форма уже заполнена my $who = param{"name"); my $flavor = param("flavor"); my $scoops = param("scoops"); my $taxrate = 1.0743; my $cost = sprintf ("%.2f", $taxrate * (1.00 + $scoops * 0.25)); print p("01<, $who, have $scoops scoops of $flavor for \$$cost."); ) else { # первый проход, представить незаполненную форму print hr(); print start form(); print p{"Whats your name? ",textfield("name")); print p{"What flavor: ", popup menu("flavor", [mint,cherry,mocha])); print p("How many scoops? ", popup menu("scoops", print p(submit("order"), reset("clear")) ; print end form(), hr(); [1..3])); print end html; Ha рис. 19.4 представлено изображение начальной формы, которую создает рассматриваемая программа. ( Netscape - (Ice Cieam Stand] File Edi> XfieiM Go Bookmarks Qptiont Edit ео« Go to ".F I oiT I 3i b I I f: i eirii.]; Ice Cream Stand Whats your najne? j What flavor: mint Hour many scoops? 1 * onJer clear Рис. 19.4. Более сложная форма Как вы помните, функция param () при вызове ее без аргументов возвращает имена всех полей формы, которые были заполнены. Таким образом вы можете узнать, была ли заполнена форма перед вызовом программы. Если у вас есть параметры, это значит, что пользователь заполнил некоторые поля существующей формы, поэтому на них нужно ответить. В противном случае следует генерировать новую форму с расчетом на вторичный вызов той же самой программы. Ссылки Вы, возможно, заметили, что обе функции popup menu () в предыдущем примере имеют весьма странные аргументы. Что означают [ mint, cherry, mocha ] И [ 1. . 3 ] ? Квадратные скобки создают нечто такое, с чем вы раньше не встречались: ссьшку на анонимный массив. Это обусловлено тем, что функция popup menu () в качестве аргумента рассчитывает получить именно ссылку на массив. Другой способ создания ссьшки на массив - использовать перед именованным массивом обратную косую черту, например \@choices. Так, следующий фрагмент кода: @choises = (mint,cherry,mocha); print pCWhat flavor: ", popup menu ("flavor", \(3choises) ) ; работает так же хорошо, как этот: print pCWhat flavor: ", popup menu ("flavor", [mint,cherry,mocha])); Ссылки функционируют примерно так, как указатели в других языках, но с меньшей вероятностью появления ошибок. Они представляют собой значения, которые указывают на другие значения (или переменные). Ссылки Perl строго делятся на типы (без возможности приведения типов) и никогда не вызывают вывода дампов ядра операционной системы. Более того, если область памяти, на которую указывают ссылки, больше не используется, она автоматически возвращается в использование. Ссылки играют центральную роль в объектно-ориентированном программировании. Они применяются и в традиционном программировании, являясь основой для создания структур данных, более сложных, нежели простые одномерные массивы и хеши. Язык Perl поддерживает ссылки как на именованные, так и на анонимные скаляры, массивы, хеши и функции. Так же, как методом \ (Змассив можно создавать ссылки на именованные массивы и посредством указания [ список ] - на анонимные хеши, можно методом \%хеш создавать ссылки на именованные хеши, а методом ( ключ1, значение1, ключ2, значение2, ... ) - на анонимные*. Да, фигурные скобки теперь используются в Perl с различными целями. Их функцию определяет контекст, в котором используются фигурные скобки. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 [ 76 ] 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |