Ссылка — это указатель. Ссылка Perl — это скалярный тип, который может указывать на переменную, массив, хеш-таблицу (также называемую ассоциативным массивом) или даже на подпрограмму и может применяться в любом месте программы.
При определении переменной добавьте перед именем переменной, чтобы получить ссылку на переменную, например:
$scalarref = $foo; # Ссылка на скалярную переменную $arrayref = @ARGV; # Ссылка на список $hashref = %ENV; # Ссылка на хэш $coderef = &handler; # Ссылка на подпрограмму $globref = *foo ; ссылка
Мы можем использовать анонимные ссылки на массивы в массивах, используя определение []:
$aref= [1,"foo",undef,13];
Элементы анонимного массива по-прежнему могут быть анонимным массивом, поэтому мы можем использовать этот метод для создания массива массивов и можем создать массив любого измерения.
мой $aref = [[1, 2, 3], [4, 5, 6], [7, 8, 9],]
В хешах мы можем использовать анонимные ссылки на хеш, определенные с помощью {}:
$href= { АПР =>4, АВГ =>8 };
Мы также можем создать анонимную ссылку на подпрограмму без имени подпрограммы:
$coderef = sub { print "Codercto!n" };
Разыменование можно отменить с помощью $, @ или % в зависимости от типа. Примеры:
Результат выполнения приведенного выше примера:
10 это: 101 2 3 это: 123%var это: key110key220
Если вы не уверены в типе переменной, вы можете использовать ref для его определения. Список возвращаемых значений выглядит следующим образом. Если следующего значения нет, возвращается false:
СКАЛАРАРРАЙХАШКОДЕГЛОБРЭФ
Примеры следующие:
Результат выполнения приведенного выше примера:
Тип ссылки r: SCALAR Тип ссылки r: ARRAYr Тип ссылки: HASH
Циклическая ссылка возникает, когда две ссылки содержат друг друга. Использовать его нужно осторожно, иначе это приведет к утечкам памяти, как в следующем примере:
Результат выполнения приведенного выше примера:
Значение foo: REF(0x9aae38).
Формат ссылки на функцию: &
Формат вызова ссылочной функции: & + имя созданной ссылки.
Примеры следующие:
Результат выполнения приведенного выше примера:
элемент: возраст элемент: 3 элемент: имя элемент: codercto