Вернуться на сайт гостевой книги Power Perl Educaton Help Download Links Off-line version

Урок 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 = <input name="a" size=3 value="$FORM{a}"><br>
B = <input name="b" size=3 value="$FORM{b}">
<input type="hidden" name="match" value=1>
<input type="submit" value="Calc"></form>
OKAY


if ($FORM{'match'} == 1){
print "A + B = ",$FORM{'a'}+$FORM{'b'},"<br>";
print "A - B = ",$FORM{'a'}-$FORM{'b'},"<br>";
print "A * B = ",$FORM{'a'}*$FORM{'b'},"<br>";
print "A<sup>B</sup> = ",$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]  [приложение Б]  [приложение В]  [заключение]  [благодарности] 


107624

85
15

HOLMS.ru Counter -эфхъё ЎшЄшЁютрэш  Counter CO.KZ


Copyright © ClericICN, 2002 - 2003