На этом шаге мы рассмотрим создание ссылок на анонимный ассоциативный массив.
По аналогии с массивами можно создавать ссылки на анонимные ассоциативные массивы, используя фигурные скобки. Операция присваивания
%hash_ref = { 'Оnе'=>1, 'Two'=>2, 'Three'=>3 };
создаст анонимный хеш-массив ('One'=>1, 'Two'=>2, 'Three'=>3) и присвоит переменной %hash_ref значение ссылки на этот хеш (его адрес в памяти).
Фигурные скобки используются во многих конструкциях, например, для обращения к индивидуальному элементу хеш-массива
$а = $myhash{"first"}
или для выделения блока операторов. Обычно такие случаи легко различимы, и их нельзя спутать с порождением ссылки на анонимный хеш. Но иногда возникают неоднозначные ситуации, требующие разрешения. Забегая вперед, приведем пример, связанный с определением функции пользователем.
Предположим, что необходимо определить функцию, которая создает анонимный хеш и возвращает ссылку на него. Возвращаемое значение можно задать при помощи встроенной функции return. Если конструкция return отсутствует, то в качестве возвращаемого значения по умолчанию принимается значение последнего выражения, вычисленного внутри функции. Таким образом, синтаксически допустимо следующее определение функции
sub get_hash_ref { {@_} }
В данном примере внутренняя конструкция в фигурных скобках интерпретируется как блок. Для того чтобы она интерпретировалась как ссылка на анонимный хеш, необходимо использовать функцию return или поставить перед внутренней конструкцией знак "+":
sub get_hash_ref { return {@_} } или sub get_hash_ref { +{@_} }
На следующем шаге мы рассмотрим другие способы создания ссылок.