3
if (%hash)
和if (defined %hash)
有何区别?在Perl中,if(%hash)和if(定义的%hash)之间有什么区别?
my %hash ;
if (%hash) {
print "defined ";
}
if (defined %hash) {
print "defined ";
}
if (%hash)
和if (defined %hash)
有何区别?在Perl中,if(%hash)和if(定义的%hash)之间有什么区别?
my %hash ;
if (%hash) {
print "defined ";
}
if (defined %hash) {
print "defined ";
}
上聚集体(散列和阵列)使用 “
defined
” 是 弃用。它用于报告是否曾经分配了该集合的内存。在未来的Perl版本中,此行为可能会消失 。你应该使用一个简单的 测试尺寸:if (@an_array) { print "has array elements\n" } if (%a_hash) { print "has hash members\n" }
5.8.3之前有与标量上下文绑哈希值的问题。他们通常会返回0.如果您在编写5.8.3之前版本的代码,请使用'if(keys%hash)'http://perldoc.perl.org/perl583delta.html#Core-Enhancements – Schwern 2010-07-07 03:25:54