Uma referência é um ponteiro. Uma referência Perl é um tipo escalar que pode apontar para uma variável, array, tabela hash (também chamada de array associativo) ou até mesmo uma sub-rotina, e pode ser aplicada em qualquer lugar do programa.
Ao definir uma variável, adicione na frente do nome da variável para obter uma referência à variável, por exemplo:
$scalarref = $foo; # Referência de variável escalar $arrayref = @ARGV; # Referência de lista $hashref = %ENV; # Referência de sub-rotina $globref = *foo ; referência
Podemos usar referências de array anônimas em arrays, usando a definição []:
$aref= [ 1,"foo",undef,13 ];
Os elementos de um array anônimo ainda podem ser um array anônimo, então podemos usar este método para construir um array de arrays e podemos construir um array de qualquer dimensão.
meu $aref = [ [1, 2, 3], [4, 5, 6], [7, 8, 9],]
Em hashes podemos usar referências de hash anônimas, definidas usando {}:
$href= {ABRIL =>4, AGO =>8};
Também podemos criar uma referência anônima de sub-rotina sem nome de sub-rotina:
$coderef = sub { print "Codercto!n" };
A desreferência pode ser cancelada usando $, @ ou % de acordo com os diferentes tipos. Os exemplos são os seguintes:
O resultado da execução do exemplo acima é:
10 é: 101 2 3 é: 123% var é: key110key220
Se você não tiver certeza do tipo de variável, poderá usar ref para determiná-lo. A lista de valores de retorno é a seguinte. Se não houver o valor a seguir, ele retornará falso:
SCALARARRAYHASHCODEGLOBREF
Os exemplos são os seguintes:
O resultado da execução do exemplo acima é:
Tipo de referência de r: SCALAR Tipo de referência de r: ARRAYr Tipo de referência: HASH
Uma referência circular ocorre quando duas referências contêm uma à outra. Você precisa usá-lo com cuidado, caso contrário causará vazamentos de memória, como no exemplo a seguir:
O resultado da execução do exemplo acima é:
O valor de foo é: REF (0x9aae38)
Formato de referência da função: &
O formato de chamada da função de referência: & + o nome de referência criado.
Os exemplos são os seguintes:
O resultado da execução do exemplo acima é:
elemento: elemento idade: 3 elemento: elemento nome: codercto