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