perl中这个变量的数据结构是什么?

时间:2011-12-09 07:31:45

标签: perl perl-data-structures

我是perl的新手并且正在阅读用perl编写的代码。一行如下:

$Map{$a}->{$b} = $c{$d};

我熟悉哈希看起来像%samplehash并且访问为$samplehash{a}="b"

但是上面这句话实际上是什么意思呢?

3 个答案:

答案 0 :(得分:10)

鉴于这些变量:

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{$a}->{$b}中的元素{}自动创建内部散列引用。 1}}哈希。

答案 1 :(得分:5)

$Map{$a}->{$b}

相当于

${ $Map{$a} }{$b}

就像

$hash{$b}

仅使用哈希引用$Map{$a}而不是%hash

有关如何使用嵌套数据结构的一些易于记忆的规则,请参阅http://perlmonks.org/?node=References+quick+reference

此外,启用自动修复(默认情况下),如果$Map{$a}启动为不存在或未启动,则会将其隐式初始化为新的哈希引用。

答案 2 :(得分:1)

$ Map中的键$ a的值是关联数组的引用,其关键字名称存储在$ b中。

%Map = ( $a => { $b => $c{$d} }, ...)