在Perl中,if(%hash)和if(定义的%hash)之间有什么区别?

Tre*_*ree 3 perl hash

if (%hash)和之间有什么区别if (defined %hash)

my %hash ;

if ( %hash) { 

  print "defined "; 
}

if (defined %hash)  { 
  print "defined ";
}
Run Code Online (Sandbox Code Playgroud)

Eug*_*ash 22

perldoc -f定义:

defined不推荐在聚合(哈希和数组)上使用" ".它曾用于报告是否已分配该聚合的内存.在将来的Perl版本中,此行为可能会消失.您应该使用简单的大小测试:

  if (@an_array) { print "has array elements\n" }
  if (%a_hash)   { print "has hash members\n"   }
Run Code Online (Sandbox Code Playgroud)