【发布时间】:2016-07-02 05:03:03
【问题描述】:
我正在尝试创建一个散列的散列 - 嵌套深度取决于传递给 @aGroupByFields 数组的参数数量。
在下面的实现中,我得到了所需的哈希结构。但是我对字段 [example - $phBugRecord->{createdBy}] 进行了硬编码,而不是从数组中派生它。
我不确定如何动态创建它。
my (@aGroupByFields) = ['createdBy','status','devPriority'];
# In real case,these are passed in as arguments
my (%hTemp);
# This is the final hash which will be structured according to above fields
# %hBugDetails is the hash containing details of all bugs
foreach my $phBugRecord ( @{ $hBugDetails{records} } ) {
# The below statement needs to be generated dynamically as
# opposed to the hard-coded values.
push(
@{
$hTemp{ $phBugRecord->{createdBy} }{ $phBugRecord->{status} }
{ $phBugRecord->{devPriority} }
},
$phBugRecord
);
}
任何指针都会有很大帮助。谢谢。
【问题讨论】:
-
您不想生成语句。您想生成哈希。但是你为什么想要那个?
-
请参考以下问题:stackoverflow.com/questions/4558981/…希望对您有所帮助!
-
@simbabque : 这样生成的哈希将用于呈现错误报告。然后错误报告将能够显示按 createdBy > status > devPriority 分组的错误。 [简而言之,我得到了一个 groupBy 字段列表和所有错误记录的转储 - 我需要返回一个哈希值,该哈希值应该对错误记录进行适当的分组]。无论如何感谢您的编辑。干杯。
-
@HåkonHægland 我不知道 Data::Diver。这很有趣,尤其是它可以是左值。 :)
标签: perl hash hash-of-hashes