Шаг 54.
Создание ссылок. Операция "\"

    На этом шаге мы рассмотрим операцию получения адреса.

    Операция "\", примененная к единственному аргументу, создает ссылку на этот аргумент. В такого аргумента может использоваться переменная любого типа или константа. Примеры:

  $а=\5;
  $scal_ref=$a; 
  $arr_ref=\@myarray; 
  $hash_ref=\%myhash; 
  $func_ref=\&myfunc;

    Таким образом, операция "\" эквивалентна операции "&" в языке программирования C++ и возвращает адрес расположения в памяти аргумента.

    В данном примере скалярной переменной присваивается значение ссылки на константу 5, т.е. адрес ячейки памяти, в которой хранится число 5. Адрес самой переменной хранится в переменной $scal_ref. Переменные $arr_ref, $hash_ref, $func_ref хранят адреса ячеек памяти, являющихся начальными точками размещения соответственно массива @myarray, хеш-массива %myhash и кода функции myfunc. К переменным, содержащим ссылки, можно применять все операции допустимые для скалярных величин. Их можно присваивать другим переменным, складывать, умножать, делить, выводить на экран и т. д. За исключением присваивания применение подобных операций к ссылкам, как правило, смысла не имеет. Например, вывод рассмотренных выше переменных

  print  $scal_ref,   "\n", $arr_ref, "\n", $hash_ref, "\n", $func_ref,"\n"; 
будет состоять из строк, подобных следующим:
  SCALAR(0x9b8994) ARRAY(0x9b8a18) HASH(0x9b8a60) CODE(0x9b3d14)

    Здесь каждая строка содержит слово, обозначающее тип ссылки и ее значение - адрес в виде шестнадцатеричного числа.

    Операция, которую чаще всего применяют к ссылкам, это операция разыменования, то есть получение того значения, адрес которого содержится в ссылке. Синтаксические конструкции, используемые для разыменования ссылок, мы рассмотрим после того, как обсудим способы их создания.

    На следующем шаге мы рассмотрим другой способ создания ссылки.




Предыдущий шаг Содержание Следующий шаг