Une référence est un pointeur. Une référence Perl est un type scalaire qui peut pointer vers une variable, un tableau, une table de hachage (également appelée tableau associatif) ou même un sous-programme, et peut être appliqué n'importe où dans le programme.
Lors de la définition d'une variable, ajoutez devant le nom de la variable pour obtenir une référence à la variable, par exemple :
$scalarref = $foo; # Référence de variable scalaire $arrayref = @ARGV; # Référence de liste $hashref = %ENV # Référence de hachage $coderef = &handler; référence
Nous pouvons utiliser des références de tableau anonymes dans les tableaux, en utilisant la définition [] :
$aref= [ 1,"foo",undef,13 ];
Les éléments d'un tableau anonyme peuvent toujours être un tableau anonyme, nous pouvons donc utiliser cette méthode pour construire un tableau de tableaux, et nous pouvons construire un tableau de n'importe quelle dimension.
mon $aref = [ [1, 2, 3], [4, 5, 6], [7, 8, 9],]
Dans les hachages, nous pouvons utiliser des références de hachage anonymes, définies à l'aide de {} :
$href= { APR =>4, AOÛT =>8 } ;
Nous pouvons également créer une référence de sous-programme anonyme sans nom de sous-programme :
$coderef = sub { print "Codercto!n" };
Le déréférencement peut être annulé en utilisant $, @ ou % selon différents types. Les exemples sont les suivants :
Le résultat de l’exécution de l’exemple ci-dessus est :
10 est : 101 2 3 est : 123%var est : key110key220
Si vous n'êtes pas sûr du type de variable, vous pouvez utiliser ref pour le déterminer. La liste des valeurs de retour est la suivante. S'il n'y a pas de valeur suivante, elle renvoie false :
SCALARARRAYHASHCODEGLOBREF
Les exemples sont les suivants :
Le résultat de l’exécution de l’exemple ci-dessus est :
Type de référence de r : SCALAIRE Type de référence de r : ARRAYr Type de référence : HASH
Une référence circulaire se produit lorsque deux références se contiennent. Vous devez l'utiliser avec précaution, sinon cela provoquera des fuites de mémoire, comme dans l'exemple suivant :
Le résultat de l’exécution de l’exemple ci-dessus est :
La valeur de foo est : REF(0x9aae38)
Format de référence de fonction : &
Le format d'appel de la fonction de référence : & + le nom de référence créé.
Les exemples sont les suivants :
Le résultat de l’exécution de l’exemple ci-dessus est :
élément : élément d'âge : 3 élément : élément de nom : codercto