xyz*_*xyz 3 perl perl-data-structures
我是perl的新手并且阅读用perl编写的代码.一行如下:
$Map{$a}->{$b} = $c{$d};
Run Code Online (Sandbox Code Playgroud)
我熟悉哈希的样子%samplehash和访问方式$samplehash{a}="b"
但是上面这句话实际上是什么说Map?
fle*_*esk 10
鉴于以下变量:
my $a = "apples";
my $b = "pears";
my %c = ("bananas" => 2);
my $d = "bananas";
my %Map;
Run Code Online (Sandbox Code Playgroud)
分配
$Map{$a}->{$b} = $c{$d};
Run Code Online (Sandbox Code Playgroud)
散列结果如下所示:
%Map = (
"apples" => {
"pears" => 2
}
);
Run Code Online (Sandbox Code Playgroud)
%Map是哈希,其分配之后通过包含自动激活散列REF:如果尚不存在,内散列裁判自动被Perl通过访问元素创建$Map{$a}->{$b}的%Map哈希值.
$Map{$a}->{$b}
Run Code Online (Sandbox Code Playgroud)
相当于
${ $Map{$a} }{$b}
Run Code Online (Sandbox Code Playgroud)
这就像
$hash{$b}
Run Code Online (Sandbox Code Playgroud)
仅使用哈希引用$Map{$a}而不是%hash.
有关如何使用嵌套数据结构的一些易于记忆的规则,请参阅http://perlmonks.org/?node=References+quick+reference.
此外,启用自动启动(默认情况下),如果$Map{$a}启动为不存在或未启动,它将被隐式初始化为新的哈希引用.