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

 

posted on 2017-06-21 15:32  庐州月光  阅读(1234)  评论(0编辑  收藏  举报