Latest web development tutorials

références Perl

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.


Créer des références

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" };

dereference

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

références circulaires

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)

Fonctions de référence

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