Le meilleur didacticiel références Perl en 2024, dans ce didacticiel, vous pouvez apprendre Créer des références,dereference,références circulaires,Fonctions de référence,
Référence est un pointeur, une référence Perl est un type scalaire peut pointer vers des variables, des tableaux, des tables de hachage (également appelée tableaux associatifs) ou sous-programme peut être utilisé partout dans le programme.
Les variables définies, le nom de variable précédé par un \, nous obtenons une référence à la variable, tels que:
$scalarref = \$foo; # 标量变量引用 $arrayref = \@ARGV; # 列表的引用 $hashref = \%ENV; # 哈希的引用 $coderef = \&handler; # 子过程引用 $globref = \*foo; # GLOB句柄引用
Dans l'ensemble, nous pouvons utiliser une référence de tableau anonyme, utilisez [] Définition:
$aref= [ 1,"foo",undef,13 ];
éléments de tableau anonymes peuvent encore être tableau anonyme, afin que nous puissions utiliser cette méthode pour construire un tableau de tableaux, le tableau peut être construit de toute dimension.
my $aref = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], ]
Nous pouvons utiliser un hachage de références de hachage anonyme, utilisez {} définition:
$href= { APR =>4, AUG =>8 };
Nous ne pouvons pas créer un nom de sous-programme de référence de sous-programme anonyme:
$coderef = sub { print "w3big!\n" };
Annuler application peut être utilisée en fonction du type de $, @ ou%, d'annuler, les exemples sont les suivants:
#!/usr/bin/perl $var = 10; # $r 引用 $var 标量 $r = \$var; # 输出本地存储的 $r 的变量值 print "$var 为 : ", $$r, "\n"; @var = (1, 2, 3); # $r 引用 @var 数组 $r = \@var; # 输出本地存储的 $r 的变量值 print "@var 为: ", @$r, "\n"; %var = ('key1' => 10, 'key2' => 20); # $r 引用 %var 数组 $r = \%var; # 输出本地存储的 $r 的变量值 print "%var 为 : ", %$r, "\n";
Mise en oeuvre de l'exemple précédent, le résultat est:
10 为 : 10 1 2 3 为: 123 %var 为 : key110key220
Si vous ne pouvez pas déterminer le type de variable, vous pouvez utiliserl'arbitre pour déterminer la valeur de retour indiquée ci - dessous, la valeur suivante est renvoyée s'il n'y a pas de faux:
SCALAR ARRAY HASH CODE GLOB REF
Des exemples sont les suivants:
#!/usr/bin/perl $var = 10; $r = \$var; print "r 的引用类型 : ", ref($r), "\n"; @var = (1, 2, 3); $r = \@var; print "r 的引用类型 : ", ref($r), "\n"; %var = ('key1' => 10, 'key2' => 20); $r = \%var; print "r 的引用类型 : ", ref($r), "\n";
Mise en oeuvre de l'exemple précédent, le résultat est:
r 的引用类型 : SCALAR r 的引用类型 : ARRAY r 的引用类型 : HASH
Les références circulaires citées dans deux émergence mutuellement inclusives. Vous devez faire attention à utiliser, sinon il va conduire à des fuites de mémoire, les exemples suivants:
#!/usr/bin/perl my $foo = 100; $foo = \$foo; print "Value of foo is : ", $$foo, "\n";
Mise en oeuvre de l'exemple précédent, le résultat est:
Value of foo is : REF(0x9aae38)
Format de référence Fonction: \ &
Référence format d'appel de fonction: & + nom de référence créé.
Des exemples sont les suivants:
#!/usr/bin/perl # 函数定义 sub PrintHash{ my (%hash) = @_; foreach $item (%hash){ print "元素 : $item\n"; } } %hash = ('name' => 'w3big', 'age' => 3); # 创建函数的引用 $cref = \&PrintHash; # 使用引用调用函数 &$cref(%hash);
Mise en oeuvre de l'exemple précédent, le résultat est:
元素 : age 元素 : 3 元素 : name 元素 : w3big