我有一个散列的 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
循环集一次,如果我不必再重复六次左右,那就太好了。
当然,可能没有“简单”的方法,但感谢所有帮助!