perl的匿名引用

perl中列表不能嵌套,只能通过引用的方式构建复杂的结构。引用其实就是c中的指针,只不过perl中对指针,也就是一个地址的声明和取值有自己的一套方法。

1、先复习普通标量的引用方法:

[vagrant@bio ~]$ cat t1.pl
use v5.26;
use warnings;
my $a=123;
my $p=$a;
say $a;
say $p;
say ${$p};
say $$p;
say "==========";
my @arr=(10,11,12);
my $pArr=@arr;
say @arr;
say $pArr;
say ${$pArr}[0];
# say $pArr[0];
say $pArr->[0];
[vagrant@bio ~]$ perl t1.pl
123
SCALAR(0xd8f6d0)
123
123
==========
101112
ARRAY(0xd9c7f0)
10
10

2、以一个数组说明:

[vagrant@bio ~]$ cat t1.pl
use v5.26;
use warnings;
my @arr1=(1,2,3); #声明一个数组
my @arr2=(4,5,6); #声明另一个数组
$arr1[3]=@arr2;  #把数组arr1中下标为3的值,存放一个引用标量,该标量存放对数组arr2的引用
say @arr1;   #打印数组1
[vagrant@bio ~]$ perl t1.pl
123ARRAY(0x1e47798)

3、如果想对数组中的引用中的结构(这里是另一个数组),进行取值,有3中方法。

[vagrant@bio ~]$ cat t1.pl
use v5.26;
use warnings;
my @arr1=(1,2,3);
my @arr2=(4,5,6);
$arr1[3]=@arr2;
say @arr1;
#say $arr1[3]  #错误
say $arr1[3][0];  #第一种最简单,好像一个2维数组
say ${$arr1[3]}[0];  #标准的引用调用方法
say $arr1[3]->[0];   #瘦箭头引用方法
[vagrant@bio ~]$ perl t1.pl
123ARRAY(0x14627d8)
4
4
4
[vagrant@bio ~]$
原文地址:https://www.cnblogs.com/litifeng/p/8614974.html