Una referencia es un puntero. Una referencia de Perl es un tipo escalar que puede apuntar a una variable, matriz, tabla hash (también llamada matriz asociativa) o incluso una subrutina, y se puede aplicar en cualquier parte del programa.
Al definir una variable, agregue delante del nombre de la variable para obtener una referencia a la variable, por ejemplo:
$scalarref = $foo; # Referencia de variable escalar $arrayref = @ARGV; # Referencia de lista $hashref = %ENV; # Referencia de hash $coderef = &handler; referencia
Podemos usar referencias de matrices anónimas en matrices, usando la definición []:
$aref= [ 1,"foo",undef,13 ];
Los elementos de una matriz anónima aún pueden ser una matriz anónima, por lo que podemos usar este método para construir una matriz de matrices y podemos construir una matriz de cualquier dimensión.
mi $aref = [ [1, 2, 3], [4, 5, 6], [7, 8, 9],]
En hashes podemos usar referencias hash anónimas, definidas usando {}:
$href= { ABR =>4, AGO =>8 };
También podemos crear una referencia de subrutina anónima sin nombre de subrutina:
$coderef = sub { imprimir "Codercto!n" };
La desreferencia se puede cancelar usando $, @ o % según los diferentes tipos. Los ejemplos son los siguientes:
El resultado de ejecutar el ejemplo anterior es:
10 es: 101 2 3 es: 123%var es: key110key220
Si no está seguro del tipo de variable, puede usar ref para determinarlo. La lista de valores de retorno es la siguiente. Si no hay ningún valor siguiente, devuelve falso:
SCALARARRAYHASHCODEGLOBREF
Los ejemplos son los siguientes:
El resultado de ejecutar el ejemplo anterior es:
Tipo de referencia de r: SCALAR Tipo de referencia de r: ARRAYr Tipo de referencia: HASH
Una referencia circular ocurre cuando dos referencias se contienen entre sí. Debe usarlo con cuidado; de lo contrario, provocará pérdidas de memoria, como en el siguiente ejemplo:
El resultado de ejecutar el ejemplo anterior es:
El valor de foo es: REF(0x9aae38)
Formato de referencia de función: &
El formato de llamada a la función de referencia: & + el nombre de referencia creado.
Los ejemplos son los siguientes:
El resultado de ejecutar el ejemplo anterior es:
elemento: edad elemento: 3 elemento: nombre elemento: codercto