删除多维哈希中的每个最终值(perl)

jbo*_*d39 1 perl hash perl-data-structures

我有一个多维哈希(维度的数量会有所不同),其中每个值都是一个简单的标量值或对另一个哈希的引用.

是否有一种删除每个最终值的好方法,保留指向其他哈希值的元素?基本上,把所有的肉从骨架上取下来.

hob*_*bbs 5

我怀疑有很好的模块可以帮助解决这个问题,可能有几个,但是在Perl中遍历数据结构时,我总是很难选择一个,而且问题起初并不复杂.所以这里是"手工"完成的:

sub prune {
  my ($href) = @_;
  while (my ($key, $value) = each %$href) {
    if (ref $value eq 'HASH') {
      prune($value);
    } else {
      delete $href->{$key};
    }
  }
}
Run Code Online (Sandbox Code Playgroud)