gpt4 book ai didi

perl - 在 Perl 中遍历多维散列

转载 作者:行者123 更新时间:2023-12-04 16:15:56 29 4
gpt4 key购买 nike

如果您在 perl 中有一个具有多个维度的散列(或对散列的引用)并且您想要遍历所有值,那么最好的方法是什么。换句话说,如果我们有
$f->{$x}{$y},我想要类似的东西

foreach ($x, $y) (deep_keys %{$f})
{
}

代替
foreach $x (keys %f) 
{
foreach $y (keys %{$f->{$x})
{
}
}

最佳答案

第一阶段:不要重新发明轮子:)

快速search on CPAN抛出了非常有用的Data::Walk .定义一个子程序来处理每个节点,然后你就被排序了

use Data::Walk;

my $data = { # some complex hash/array mess };

sub process {
print "current node $_\n";
}

walk \&process, $data;

鲍勃是你的叔叔。请注意,如果你想传递一个散列来遍历,你需要传递一个对它的引用(参见 perldoc perlref ),如下所示(否则它也会尝试处理你的散列键!):
walk \&process, \%hash;

如需更全面的解决方案(但在 CPAN 中乍一看更难找到),请使用 Data::Visitor::Callback或其父模块 - 这具有让您更好地控制您所做的事情的优势,并且(仅用于额外的街头信誉)是使用 Moose 编写的。

关于perl - 在 Perl 中遍历多维散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/160175/

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