perl中的引用

1. 创建引用:

1.1 用反斜杠操作符:

  $arr = \@ARGS;

$arr = \$str;

$hashref = \%hash;


1.2 匿名数据

1.2.1 匿名数组组合器:

用方括弧创建一个匿名数组的引用:

$arrayref = [1, 2, ['a', 'b', 'c', 'd']]; 通过$arrayref->[2][1] 访问数值“b”。

eg:

$arr = ['test', 'b',1];
print "\$arr     :\n".Dumper($arr)."\n";
print "\@\$arr   :\n".Dumper(@$arr)."\n";
print "\@\$arr[1]:\n".@$arr[1]."\n";
print "\$arr->[1]:\n".$arr->[1]."\n";
print "\$arr[1]  :\n".$arr[1]."\n";

Output

$arr     :
$VAR1 = [
          'test',
          'b',
          1
        ];

@$arr   :
$VAR1 = 'test';
$VAR2 = 'b';
$VAR3 = 1;

@$arr[1]:
b
$arr->[1]:
b
$arr[1]  :

1.2.1 匿名散列的引用:

可以用话括弧创建一个匿名散列的引用:

eg:

$hash = {
 "jone"   => 21,
 "amy"    => 34,
 "mango"  => 35,
};
%hash2 = %$hash;
print "\$hash      :\n". Dumper($hash)."\n";
print "\%\$hash    :\n". Dumper(%$hash)."\n";
print "\%\$hash{jone}:\n".$hash2{jone}."\n";
print "\$hash->{amy}: \n".$hash->{amy}."\n";

#print "\%\$hash{jone}:\n".%$hash{jone}."\n";  这里将会报错,Scalar found where operator expected at reference.pl line 24, near "$%$hash"
    (Missing operator before $hash?)

Output:

$hash      :
$VAR1 = {
          'mango' => 35,
          'jone' => 21,
          'amy' => 34
        };

%$hash    :
$VAR1 = 'mango';
$VAR2 = 35;
$VAR3 = 'jone';
$VAR4 = 21;
$VAR5 = 'amy';
$VAR6 = 34;

%$hash{jone}:
21
$hash->{amy}:
34

eg2:

my $conn_opts = {
    'IPv4' => {
        'src' => "ipv4_src",
        'dst' => "ipv4_dst",
    },
    'IPv6' => {
        'src' => "ipv6_src",
        'dst' => "ipv6_dst",
    }
};

print $conn_opts->{'IPv4'}->{'src'};


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值