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

在Perl中,子哈希表是如何工作的?,perl,Perl,我正在编写一些Perl代码,并试图了解Perl在做什么 我被以下哈希表代码卡住了: $summary01{$myHash{'ConfigID'}}{'ConfigID'} = $myHash{'ConfigID'}; 变量$myHash包含一条数据库记录 此代码正在设置存储来自sql查询的数据摘要 有人能解释一下}{代码在做什么吗?这是多维哈希表吗 谢谢,代码 $summary01{$myHash{'ConfigID'}}{'ConfigID'} = $myHash{'ConfigID'};

我正在编写一些Perl代码,并试图了解Perl在做什么

我被以下哈希表代码卡住了:

$summary01{$myHash{'ConfigID'}}{'ConfigID'} = $myHash{'ConfigID'}; 
变量
$myHash
包含一条数据库记录

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

有人能解释一下
}{
代码在做什么吗?这是多维哈希表吗

谢谢,

代码

$summary01{$myHash{'ConfigID'}}{'ConfigID'} = $myHash{'ConfigID'}; 
可以重写为

my $configID = $myHash{ConfigID};
$summary01{$configID}{ConfigID} = $configID;
即,假设
$configID=123
,这将向
%summary01
添加一个条目,如

%summary01 = (
    ...,
    123 => { ..., ConfigID => 123 },
    ...,
);
}{
序列没有特殊意义。这只是嵌套哈希
$summary{…}{…}
中的一个查找,其中一个哈希键是另一个哈希查找
$myHash{ConfigID}

代码

$summary01{$myHash{'ConfigID'}}{'ConfigID'} = $myHash{'ConfigID'}; 
可以重写为

my $configID = $myHash{ConfigID};
$summary01{$configID}{ConfigID} = $configID;
即,假设
$configID=123
,这将向
%summary01
添加一个条目,如

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

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

让我们中断
$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

让我们把
$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

有趣的是,你是如何在根本不谈论引用的情况下解释这一点的。我确实喜欢箭头
->
使嵌套引用更加明显,特别是对于初学者。有趣的是,你是如何在根本不谈论引用的情况下解释这一点的。我确实喜欢箭头
->
使嵌套引用更加明显,尤其是特别适合初学者。