perl 中的引用

Posted 庐州月光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了perl 中的引用相关的知识,希望对你有一定的参考价值。

perl 语言中的引用共分为两类:

声明引用时只需要在对象的前面加上反斜杠

第一列是数组的引用:

代码示例:

my @array     = (1, 2, 3);
my $array_ref = \@array;

第二种是哈希的引用

代码示例:

my %hash     = (1, 2, 3, 4);
my $hash_ref = \@hash;

通过引用去访问对应的值,通过 -> 操作符

数组的引用, 通过 [ ] 中括号 加上对应的下标,代码示例:

my @array     = (1, 2, 3);
my $array_ref = \@array;
print $array_ref->[0];

哈希的引用,通过{}  大括号加上对应的key,代码示例:

my %hash     = (1, 2, 3, 4);
my $hash_ref = \@hash;
print $array_ref->{1};

当我们想要把引用对应的变量传递给另外一个变量时,就需要解引用,使用 { } 大括号

代码示例:

my @array     = (1, 2, 3);
my $array_ref = \@array;
my @array_new = @{$array_ref};

my %hash     = (1, 2, 3, 4);
my $hash_ref = \@hash;
my %hash_new = %{$hash_ref};

数组的引用通过 @ 符号 , 哈希的引用通过 % 符号;

 

引用实际上存储的是所引用对象的地址,举个例子

perl -e my @a = (1, 2, 3, 4);my $b = \@a;print qq{$b\n};
ARRAY(0x122bae8)


perl -e my %a = (1, 2, 3, 4);my $b = \%a;print qq{$b\n};
HASH(0x262dae8)

从上述代码的运行结果可以看出,数组的引用对应的值是 ARRAY+ 地址,哈希的引用是HASH+ 地址,这里的地址是一个16进制的值

除了使用 \ 符号, 声明一个引用外,还可以声明一个匿名引用, 数组的引用使用 [  ] 操作符, 哈希的引用使用 {  } 操作符;

代码示例:

my $array_ref = [1, 2, 3, 4];
my $hash_ref  = {1, 2, 3, 4}

print $array_ref->[0];
print $hash_ref->{1};

 

以上是关于perl 中的引用的主要内容,如果未能解决你的问题,请参考以下文章

如何有条件地将 C 代码片段编译到我的 Perl 模块?

perl中的队列

未解决的对“片段”部分中的符号“”的引用

“在将哈希分配给 perl 中的哈希时,“不能使用字符串 (””) 作为哈希引用,而“严格引用”在使用时出现错误

Perl编程-4子程序+引用

perl中符号引用和硬引用的区别