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