我正在研究一些Perl代码,并且我试图了解Perl正在做什么。
我坚持使用以下哈希表代码:
two_three_four
变量$summary01{$myHash{'ConfigID'}}{'ConfigID'} = $myHash{'ConfigID'};
包含单个数据库记录。
此代码设置存储来自sql查询的数据摘要。
有人可以解释$myHash
代码在做什么吗?这是一个多维哈希表吗?
谢谢,
答案 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