我是新来的Perl和阅读用Perl编写的代码。一条线读取这样的:这个变量在perl中的数据结构是什么?
$Map{$a}->{$b} = $c{$d};
我所熟悉的哈希看起来像%samplehash
和$samplehash{a}="b"
访问,但什么上面一行说一下什么是实际地图?
我是新来的Perl和阅读用Perl编写的代码。一条线读取这样的:这个变量在perl中的数据结构是什么?
$Map{$a}->{$b} = $c{$d};
我所熟悉的哈希看起来像%samplehash
和$samplehash{a}="b"
访问,但什么上面一行说一下什么是实际地图?
考虑到这些变量:
my $a = "apples";
my $b = "pears";
my %c = ("bananas" => 2);
my $d = "bananas";
my %Map;
分配
$Map{$a}->{$b} = $c{$d};
结果哈希看起来像这样:
%Map = (
"apples" => {
"pears" => 2
}
);
%Map
是一个散列,它在赋值之后包含通过autovivification的散列引用:如果尚未存在,则内部散列引用由Perl自动通过访问%Map
散列中的元素$Map{$a}->{$b}
来创建。
$ Map中键$ a的值是一个关联数组的引用,该数组的键名存储在$ b中。
%Map = ($a => { $b => $c{$d} }, ...)
$Map{$a}->{$b}
相当于
${ $Map{$a} }{$b}
这就好比是
$hash{$b}
仅使用代替%hash
哈希参考$Map{$a}
。
请参阅http://perlmonks.org/?node=References+quick+reference了解有关如何使用嵌套数据结构的一些易记规则。
此外,如果$Map{$a}
启动为不存在或undef,则它将被隐式初始化为新的散列引用。
什么是Map ...请参阅perldoc http://perldoc.perl.org/functions/map.html – yb007
当您需要了解特定的数据结构时,转储变量会极大地提供帮助。只需'使用Data :: Dumper'并稍后'打印Dumper($ Map);'。 – musiKk
@musiKk:我想你的意思是'print Dumper(\%Map);' – flesk