На этом шаге мы рассмотрим операцию получения адреса.
Операция "\", примененная к единственному аргументу, создает ссылку на этот аргумент. В такого аргумента может использоваться переменная любого типа или константа. Примеры:
$а=\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)
Здесь каждая строка содержит слово, обозначающее тип ссылки и ее значение - адрес в виде шестнадцатеричного числа.
Операция, которую чаще всего применяют к ссылкам, это операция разыменования, то есть получение того значения, адрес которого содержится в ссылке. Синтаксические конструкции, используемые для разыменования ссылок, мы рассмотрим после того, как обсудим способы их создания.
На следующем шаге мы рассмотрим другой способ создания ссылки.