gpt4 book ai didi

Perl hash of hashes of hashes ... 是否有 'easy' 方法来获取列表末尾的元素?

转载 作者:行者123 更新时间:2023-12-04 13:11:52 28 4
gpt4 key购买 nike

我有一个哈希的 Perl 哈希......大约 11 或 12 个元素深。请原谅我没有重复下面的结构!

一些级别有固定的标签,例如'NAMES' , 'AGES'或类似的,因此访问这些级别很好,因为我可以直接使用标签,但是我需要遍历其他变量,这会导致一些很长的语句。这是一组循环中一半的示例:

foreach my $person (sort keys %$people) {
foreach my $name (sort keys %{$people->{$person}{'NAMES'}}) {
foreach my $age (sort keys %{$people->{$person}{'NAMES'}{$name}{'AGES'}}) {
. . . # and so on until I get to the push @list,$element; part

这只是一个例子,但它遵循我所拥有的结构。没有固定名称部分(大写元素)可能会更短,但在其他地方需要它们以供引用。

我尝试将元素转换为散列以在每个阶段缩短它,
例如对于第二个 foreach,我尝试了各种形式:
foreach my $name (sort keys %{$person->{'NAMES'}})

但这没有用。我确定我以前见过类似的东西,所以语义可能不正确。

我研究了有关哈希的哈希和对哈希及其元素的引用等的页面,但没有运气。我看过 while each 的例子循环,但它们似乎并没有特别短或更容易实现。也许只是有一种不同的方法可以做到这一点,而我没有捕获重点。我已经写出全套 foreach循环一次,如果我不必再重复六次左右,那就太好了。

当然,可能没有“简单”的方法,但感谢所有帮助!

最佳答案

$person是关键,要缩短内部循环的内容,您需要将值分配给某些内容:

foreach my $person_key (sort keys %$people) {
my $person = $people->{$person_key};
my $names = $person->{NAMES};
foreach my $name (sort keys %$names) {

关于Perl hash of hashes of hashes ... 是否有 'easy' 方法来获取列表末尾的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13403397/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com