且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在 Perl 中遍历多维散列

更新时间:2023-02-23 13:17:14

这是一个选项.这适用于任意深度的散列:

Here's an option. This works for arbitrarily deep hashes:

sub deep_keys_foreach
{
    my ($hashref, $code, $args) = @_;

    while (my ($k, $v) = each(%$hashref)) {
        my @newargs = defined($args) ? @$args : ();
        push(@newargs, $k);
        if (ref($v) eq 'HASH') {
            deep_keys_foreach($v, $code, \@newargs);
        }
        else {
            $code->(@newargs);
        }
    }
}

deep_keys_foreach($f, sub {
    my ($k1, $k2) = @_;
    print "inside deep_keys, k1=$k1, k2=$k2\n";
});