我正在编写脚本,我必须通过或未通过测试用例。所以我在一个变量中有一些价值,这个变量就是unf。
我正在检查这样的事情:
我有一个$val
,其中有一系列哈希值。现在我正在检查该数组是否为空:
if(@$val<=0){do something}
因此,如果$val =undef
,则会引发错误:
不能将未定义的值用作ARRAY参考
如何检查$val
是否为空?
答案 0 :(得分:3)
如果要检查标量是否为undef,请使用defined
运算符。
if ( not defined $val ) {
# do something
}
答案 1 :(得分:2)
使用
use strict;
use warnings;
位于文件顶部,他们可能会告诉您问题所在。
答案 2 :(得分:1)
回答你可能会问的问题有两个部分。
首先,无条件地创建数组引用。如果您可能会在undef
中通过$val
,请使用类似$val // []
的内容将其提升为代码中的空数组引用。
然后,检查@$val
是否为非零。非零值表示数组中有元素。通常,这被称为真值测试:
unless (@{ $val // [] }) {
... # stuff to do if the array is empty
}
答案 3 :(得分:0)
如果$val
是undef,则不是对空数组的引用;您的代码还有其他问题。你能说明$val
是如何设置的吗?
答案 4 :(得分:0)
您可以尝试“存在”功能: http://perldoc.perl.org/functions/exists.html
此函数检查数组引用是否存在于哈希数组
中 if(exists @$val<=0) {do something}
else {print "$val is an undefined reference";}