к данным осуществляется при помощи
Урок 12. Оператор Print, хеши. Хэш - ассоциативный массив, доступ к данным осуществляется при помощи ключа, ассоциированного со значением. Описание хеша начинается с символа "%" (процент). Т.к. ключей и значений должно быть одинаковое количество (иначе какой-нибудь ключ ни с чем не проассоциируется или одно из значений останется лишним), массив с четным количеством элементов можно преобразовать в хеш. Верно и обратное. В хеше не должно быть одинаковых ключей. Также ключи не могут иметь значение "пустая строка". Однако это не справедливо для значений ключей. Способы определения хеша Способ 1: %hash = ( 'шляпа' => 'серая', 'водка' => 'горькая', 'вобла' => 'вкусная' ); Способ 2: %hash = (); $hash{'шляпа'} = 'серая'; $hash{'водка'} = 'горькая'; $hash{'вобла'} = 'вкусная'; С одним из системных хешей Вы уже знакомы, это хеш %ENV. Приведенная ниже программа демонстрирует все значения этого хеша. #!/usr/bin/perl #programm 12 print "Content-Type: text/html\n\n"; $flag=1; @array=%ENV; print "<table>\n"; foreach $i(@array){ if($flag==1){$flag=0; print "<tr><td>$i</td>"; }else{$flag=1; print "<td>$i</td></tr>\n" }} print "</table>"; Т.к. этот курс не подразумевает глубокое изучение хешей, на приведенном выше материале мы и остановимся. Материал по более детальному изучению можно найти в приложении. Еще немного об операторе Print Иногда есть необходимость вывести целый блок однотипной информации. В таком случае использование оператора Print в классическом стиле не совсем удобно. Яркий пример тому программа номер 11: чтобы вывести форму, потребовалось написать оператор Print целых 5 раз, да еще нужно было следить, чтобы перед каждой кавычкой стоял бэк-слэш. Чтобы не возникало подобных неудобств прибегают к методу here-doc. Суть этого метода такова: Прямо в текст программы вставляется фрагмент, предназначенный для вывода, за которым следует выражение-огранечитель. Помимо того, что мы избавляемся от необходимости лишний раз писать оператор print, этот метод хорош и тем, что внутри блока сохраняется форматирование и интерполируются все метасимволы. Необходимые требования, предъявляемые ограничителям: 1. ограничитель должен быть изолирован, т.е. стоять на следующей строке ПОСЛЕ выводимого блока, и после ограничителя не должно быть никаких символов кроме перевода строки (не путать с метасимвлолм "\n"); 2. ограничитель не должен являться зарезервированным литералом (это пока Вам не грозит). Вот программа 11 с применением метода here-doc: #!/usr/bin/perl #programm 12 print "Content-Type: text/html\n\n"; &parse_form; print <<OKAY; <form method="get" action="/cgi-bin/script.pl"><br> A = B = OKAY if ($FORM{'match'} == 1){ print "A + B = ",$FORM{'a'}+$FORM{'b'}," "; print "A - B = ",$FORM{'a'}-$FORM{'b'}," "; print "A * B = ",$FORM{'a'}*$FORM{'b'}," "; print "AB = ",$FORM{'a'}**$FORM{'b'};} * * * * Напишите программу, меняющую ключи и значения хеша местами. Используйте промежуточный массив для решения этой задачи. Дополнительная информация: [подробно о хешах] [что такое хеши] [переменные] [Содержание] [Вступление] [необходимое для начала изучения] [урок 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] [правила хорошего тона] [приложение A] [приложение Б] [приложение В] [заключение] [благодарности] |
Copyright (c) ClericICN, 2002 |