Хэши могут инициализироваться с помощью списков, содержащих пары "ключ/ значение":
%аgе = ( "Nat", 24, "Jules", 25, "Josh", 17 );
Такая запись эквивалентна следующей:
$age{"Nat"} = 24;
$age{"Jules"} = 25;
$age{"Josh"} = 17;
Для упрощения инициализации хэшей был создан оператор, оператор =>. В основном он представляет собой более наглядную замену для занятой. Например, возможна следующая инициализация хэша:
%food_color = (
"Apple" => "red", "Banana" => "yellow", "Lemon" => "yellow", "Carrot" => "orange" );
Однословные ключи хэшей также автоматически интерпретируются как строки, поэтому вместо $hash{"somekey"} можно написать просто $hash{somekey}. Приведенная выше инициализация %food_color записывается в следующем виде:
%food_color = (
Apple => "red", Banana => "yellow", Lemon => "yellow", Carrot => "orange" Одно из важных свойств хэшей заключается в том, что их элементы хранятся в особой последовательности, обеспечивающей выборку. Следовательно, независимо от порядка занесения данных в хэш, порядок их хранения будет непредсказуемым.
Занесение элемента в хэш
Присвоите нужное значение в записи вида:
$ХЭШ{$КЛЮЧ} = $ЗНАЧЕНИЕ;
Процесс занесения данных в хэш весьма тривиален. В языках, где хэш не относится к встроенным типам данных, приходится беспокоиться о переполнении, изменении размеров и коллизиях в хэш-таблицах. В Perl обычное присваивание решает сразу все проблемы. Если ключ уже занят, то есть содержит предыдущее значение, память автоматически освобождается (по аналогии с присваиванием скалярной переменной) .
# Хэш %food_color определяется во введении
$food_color{Raspberry} = "pink":
print "Known foods:\n";
foreach $food (keys %food_color) { print "$food\n";
} Known foods:
Banana
Apple
Raspberry
Carrot
Lemon
Если в качестве ключа хэша используется неопределенная величина undef, она преобразуется в пустую строку "" (что сопровождается предупреждением при запуске с параметром -w). Вероятно, неопределенный ключ undef - это не то, что вы хотели. С другой стороны, undef является вполне допустимым значением в хэ-шах. Однако при выборке значения для ключа, отсутствующего в хэше, вы также получите undef. Это означает, что для проверки существования ключа $key в хэше %hash простая логическая проверка if ($hash{$key}) не подходит. Присутствие ключа в хэше проверяется записью вида exists($hash{$key}); определенность ассоциированного значения - defined($hash{$key}), а его истинность - if ($hash{$key} /. Во внутренних алгоритмах хэширования Perl перестановки строки попадают на одну и ту же позицию. Если в ключах хэша многократно встречаются перестановки одной строки (скажем, "spare" и "craps"), быстродействие хэша заметно падает. На практике это происходит редко
Интернет
Как узнать хэш??
Похожие вопросы
- Что такое хэш доступным "человеческим" языком?
- Дайте программу для очистки компа типо чистка кукки/хэш и тд? кроме CCleaner
- а как узнать свою память не которая на флешке, а своя память телефона? у меня n81
- как узнать логин и пароль своего подключения в интернет
- Вопрос срочный, ответьте, как узнать кто сидел с WiFi?
- Как узнать кто пишет анонимно?
- Мне на Одноклассниках пишет мужчина, как узнать, из какой он страны? Как узнать его IP адрес, может он поможет?
- кто шарит в интернете то есть его настройке ADSL? вопрос такой! у меня ADSL дома, у друга тоже ADSL я узнал его логин и
- хм...а можно узнать о чем человек общается в аське?
- Узнать на какие сайты он ходит...