Perl:如何测试是否已将任何值(甚至为零)分配给散列键

前端之家收集整理的这篇文章主要介绍了Perl:如何测试是否已将任何值(甚至为零)分配给散列键前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否有正确的测试方法,如果已经为特定的哈希键分配了任何值,即使该值为零?我一直在处理这样的声明:

%hash=();
$hash{a}=1;
$hash{b}=0;
if($hash{$key}) { do something }

但是,对于已经被触摸的键和已被赋值为0的键(例如,$hash {b}和$hash {c}都计算为’false’),这给出了相同的结果.有没有办法说出这两者之间的区别?

解决方法

使用 defined运算符检查某些内容是否具有非undef值

if ( defined $hash{ $key } ) {
  //do stuff
}

使用exists运算符检查是否已写入%hash的$key

if ( exists $hash{ $key } ) {
  //do stuff
}

区别在于定义检查以查看值是否为undef和exists之外的任何值,用于验证$key是否为散列的键,尽管其值.

猜你在找的Perl相关文章