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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章