Конспект Perl2
Perl2
Хэши - переменные и литералы
Каждый элемент в литерале состоит из двух частей: поискового ключа и связанного с ним значения, разделенных символами =>, например:
('версия' => 5.8, 'язык' => 'Perl') # ключ - строка
(3.14 => 'число Пи') # ключ - дробь
(1 => 'one', 2 => 'two', 3 => 'three') # ключ - целое
($key1 => $value1, $key2 => $value2) # ключ в переменной
Операция => эквивалентна запятой, за исключением того, что она создает строковый контекст, так что ее левый операнд автоматически преобразуется к строке. Именно поэтому числа в этом примере записаны без кавычек. Литеральные списки, содержащие ассоциативные пары, обычно применяются для присваивания хэшам начальных значений:
%quarter1 = (1 => 'январь', 2 => 'февраль', 3 => 'март');
%dns = ($site => $ip, 'www.perl.com' => '208.201.239.36');
%empty = (); # пустой список удаляет все элементы хэша
Значения ключей в хэше уникальны, поэтому хэш часто используется для моделирования множества или простой базы данных с уникальным поисковым индексом. При добавлении нескольких элементов с одинаковыми ключами в хэше остается только последний добавленный:
%num2word = (10 => 'десять', 5 => 'пять', 10 => 'ten');
# в %num2word останется только (5 => 'пять', 10 => 'ten')
Ситуация, когда с поисковым ключом хэша ассоциируется неопределенное значение, считается нормальной.
Начальные значения элементов хэша могут браться из любого списка, при этом значения нечетных элементов списка становятся в хэше ключами, а четных - ассоциированными с этими ключами значениями. Так что два следующих присваивания эквивалентны:
%dictionary = ('я' => 'I', 'он' => 'he', 'она' => 'she');
%dictionary = ('я', 'I', 'он', 'he', 'она', 'she');
И конечно, для заполнения хэша элементами вместо списочного литерала можно использовать массив, содержащий пары "ключ - значение":
%dictionary = @list_of_key_value_pairs; # массив пар
Все значения, хранящиеся в хэше, можно преобразовать в список, если употребить переменную-хэш в списочном контексте в правой части операции присваивания. Вот так:
@key_value_list = %hash; # список ключей и значений
При этом в список будут помещены все ассоциативные пары из хэша, и ключи станут нечетными элементами списка, а значения - четными. Порядок копирования в массив ассоциативных пар заранее не известен.
При обращении к элементу хэша в фигурных скобках после имени переменной указывается значение поискового ключа. Поскольку значение элемента хэша - это скалярная величина, при обращении к элементу хэша перед именем переменной ставится префикс $, как у прочих скалярных значений.
$hash{$key} = $value; # добавление значения в хэш по ключу
$value = $hash{$key}; # извлечение значения из хэша по ключу
Привет!
Похоже, вы зашли сюда первый раз, и еще не знаете что
такое МоёМесто.ru?
Это сервис интернет закладок. Для чего он может вам пригодится?
Здесь вы можете хранить все свои закладки
Просто
зарегистрируйтесь, установите панель
МоёМесто::Панель в свой браузер,
и вы сможете сохранить любую страницу в Интернете в один клик.
А если у вас уже есть коллекция любимых ссылок в браузере — вы можете
импортировать их в
МоеМесто.
Здесь вы можете хранить любые файлы
Картинки, фотографии, документы, музыку и даже видео — все что угодно.
500 Мегабайт дискового пространства
предоставляется бесплатно.
Время хранения файлов
не ограниченно.
Зарегистрируйтесь
прямо сейчас, и уже через несколько секунд
вы сможете хранить свои закладки в Интернете!