如何删除空哈希?

ian*_*215 5 perl

我试图弄清楚如何删除返回值的哈希条目{}.

我正在做这样的事情;

if (ref($snapshots{"ID\:$id"}) eq "{}") {
    print "ID $id hash no snapshots\n";
}
Run Code Online (Sandbox Code Playgroud)

它似乎不起作用.有任何想法吗?

Que*_*tin 7

考虑到{},ref"HASH"不会"{}"

if (ref $snapshots{"ID\:$id"} eq 'HASH' && !scalar keys %{$snapshots{"ID\:$id"}}) {
    delete $snapshots{"ID\:$id"};
}
Run Code Online (Sandbox Code Playgroud)

  • 你不必使用`keys`.如果散列本身为空,则散列本身在标量上下文中求值为false.因此`%{$ snapshot {"ID \:$ id"}}`足以测试空洞. (2认同)