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};
欢迎关注微信公众号<生信修炼手册>