Списки и хэши

При обсуждении вопроса инициализации хэша отмечалась близкая связь хэшей и массивов. Когда хэш используется в контексте списка, Perl воспринимает его в виде обычного списка ключей и значений. Этот список может быть присвоен массиву, как и любой другой список:



После выполнения этого кода массив @Data будет содержать шесть элементов. Причем элементы с четными индексами (включая нуль) соответствуют именам режиссеров, а элементы с нечетными индексами — названию фильмов. С этим массивом можно выполнить любую операцию, возможную с массивами, и затем присвоить получившийся массив хэшу %Movies:



Perl хранит элементы хэша в удобном для обработки порядке, который с точки зрения пользователя является случайным. Последовательность ввода ключей хэша не запоминается и выводятся они в произвольном порядке. Для упорядоченного вывода элементов хэша нужно или отсортировать их (см. ниже раздел “Практическое применение хэшей”), или запомнить порядок, в котором вводились ключи (см. раздел “Вопросы и ответы” в конце этого занятия).

Массивы и хэши имеют сходства и в другом. Для копирования хэша достаточно присвоить один хэш другому:



Когда вы помещаете %Old_ Hash в правую часть оператора присваивания, там, где обычно Perl ожидает встретить список или массив, Perl преобразует хэш в список, используемый в дальнейшем для инициализации %New Hash. Подобным образом вы можете комбинировать хэши и манипулировать ими, как списками:



Первый список объединяет два хэша, %First и %Second в третий хэш %Both. Если некоторые ключи %First присутствуют в %Second, пара ключ-значение второго хэша заменяет пару ключ-значение первого. Во второй строке %Both представлен списком пар ключ-значение. Кроме него в скобках есть еще две пары ключ-значение. Полученный полный список используется для инициализации хэша %Additional.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: