在Perl中,子哈希表如何工作?

时间:2017-09-28 14:45:32

标签: perl

我正在研究一些Perl代码,并且我试图了解Perl正在做什么。

我坚持使用以下哈希表代码:

two_three_four

变量$summary01{$myHash{'ConfigID'}}{'ConfigID'} = $myHash{'ConfigID'}; 包含单个数据库记录。

此代码设置存储来自sql查询的数据摘要。

有人可以解释$myHash代码在做什么吗?这是一个多维哈希表吗?

谢谢,

2 个答案:

答案 0 :(得分:5)

代码

$summary01{$myHash{'ConfigID'}}{'ConfigID'} = $myHash{'ConfigID'}; 

可以改写为

my $configID = $myHash{ConfigID};
$summary01{$configID}{ConfigID} = $configID;

即。假设$configID = 123,这会向%summary01添加一个条目,如

%summary01 = (
    ...,
    123 => { ..., ConfigID => 123 },
    ...,
);

}}{序列没有特殊含义。这只是嵌套哈希$summary{ ... }{ ... }中的查找,其中一个哈希键是另一个哈希查找$myHash{ConfigID}

答案 1 :(得分:0)

让我们把$summary01{$myHash{'ConfigID'}}{'ConfigID'} = $myHash{'ConfigID'};打破成更长篇的东西:

# Observation: %$summary01 is a hash of hashes
my $foo = $myHash{'ConfigID'};  # $foo is a scalar value
my $bar = $summary01{$foo};     # $bar is a pointer, a copy of a reference
$bar{'ConfigID'} = $foo;        # .... and this is the actual assignment