Références Perl
Une référence est un pointeur. Une référence Perl est un type scalaire qui peut pointer vers des variables, des tableaux, des hachages (aussi appelés tableaux associatifs), et même des sous-routines, et elle peut être utilisée n'importe où dans le programme.
Création de références
Lors de la définition d'une variable, faites précéder le nom de la variable d'un \ pour obtenir une référence à cette variable, par exemple :
$scalarref = \$foo; # 标量变量引用 $arrayref = \@ARGV; # 列表的引用 $hashref = \%ENV; # 哈希的引用 $coderef = \&handler; # 子过程引用 $globref = \*foo; # GLOB句柄引用
Dans les tableaux, nous pouvons utiliser des références de tableau anonymes, définies avec [] :
$aref= [ 1,"foo",undef,13 ];
Les éléments d'un tableau anonyme peuvent eux-mêmes être des tableaux anonymes, nous pouvons donc utiliser cette méthode pour construire des tableaux de tableaux, et des tableaux de n'importe quelle dimension.
my $aref = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]
Dans les hash, nous pouvons utiliser des références anonymes de hash, définies avec {} :
$href= { APR =>4, AUG =>8 };
Nous pouvons également créer une référence anonyme de sous-routine sans nom de sous-routine :
$coderef = sub { print "Example!\n" };
Déréférencement
Le déréférencement peut être effectué en utilisant $, @ ou % selon le type, par exemple :
Exemples
L'exécution de l'exemple ci-dessus produit le résultat suivant :
10 为 : 10 1 2 3 为: 123 \%var 为 : key110key220
Si vous n'êtes pas sûr du type de la variable, vous pouvez utiliserrefpour le déterminer. Les valeurs de retour sont les suivantes. Si aucune des valeurs suivantes ne s'applique, false est renvoyé :
SCALAR ARRAY HASH CODE GLOB REF
Exemple :
Exemples
L'exécution de l'exemple ci-dessus produit le résultat suivant :
r 的引用类型 : SCALAR r 的引用类型 : ARRAY r 的引用类型 : HASH
Références circulaires
Les références circulaires se produisent lorsque deux références se contiennent mutuellement. Vous devez les utiliser avec précaution, sinon cela provoquera des fuites de mémoire, comme dans l'exemple suivant :
Exemples
L'exécution de l'exemple ci-dessus produit le résultat suivant :
Value of foo is : REF(0x9aae38)
Références de fonctions
Format d'une référence de fonction : \&
Format d'appel d'une référence de fonction : & + le nom de la référence créée.
Exemple :
Exemples
L'exécution de l'exemple ci-dessus produit le résultat suivant :
元素 : age 元素 : 3 元素 : name 元素 : exampleAutres extensions