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
};'
ARRAY(0x122bae8)


perl -e 'my %a = (1, 2, 3, 4);my $b = \%a;print qq{$b
};'
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};
原文地址:https://www.cnblogs.com/xudongliang/p/7059849.html