如何清除Perl哈希

时间:2010-08-01 04:50:32

标签: perl

假设我们定义了一个像这样的匿名哈希:

my $hash = {};

然后使用哈希。然后是时候清空或清除哈希了 重用。经过一些Google搜索,我找到了:

%{$hash} = () 

undef %{$hash}

两者都将满足我的需求。这两者有什么区别?它们是否都是用于清空哈希的相同方法?

2 个答案:

答案 0 :(得分:31)

%$hash_ref = ();比取消散列更有意义。取消定义哈希表示你已完成哈希。分配一个空列表表示你只想要一个空哈希。

答案 1 :(得分:23)

是的,它们完全相同。两者都从表中删除任何现有的键和值,并将哈希值设置为空列表。

请参阅perldoc -f undef

  

undef EXPR
  undef取消定义EXPR的值,该值必须是左值。仅限使用                  标量值,数组(使用“@”),散列(使用“%”),a                  子程序(使用“&”)或typeglob(使用“*”)...
                 例子:

               undef $foo;  
               undef $bar{'blurfl'};      # Compare to: delete $bar{'blurfl'};  
               undef @ary;  
               undef %hash;

然而,您不应使用undef删除除标量之外的任何值。对于其他变量类型,将其设置为该类型的“空”版本 - 例如对于数组或哈希,@foo = (); %bar = ();