Поиск

Списки и хэши

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

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

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

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

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

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