3

我正在编写必须通过或失败测试用例的脚本。所以我在一个变量中有一些价值,这个变量是 undef。

我正在检查这样的事情:

我有一个$val哈希数组。现在我正在检查该数组是否为空:

if(@$val<=0){do something}

因此,如果那样$val = undef,则会引发错误:

不能使用未定义的值作为 ARRAY 引用

我应该如何检查我$val的是否为空?

4

4 回答 4

5

如果要检查标量是否为 undef,请使用defined运算符。

if ( not defined $val ) { 
    # do something
}
于 2013-01-31T18:27:37.290 回答
2

回答您可能提出的问题有两个部分。

首先,无条件地创建数组引用。如果您可能会被传入undef$val请将其提升为代码中的空数组引用,例如$val // [].

然后,检查是否@$val为非零。非零表示数组中有元素。按照惯例,这被表述为真值测试:

unless (@{ $val // [] }) {
    ... # stuff to do if the array is empty
}
于 2013-01-31T18:27:24.847 回答
1

利用

 use strict;
 use warnings;

在文件的顶部,他们可能会告诉您问题所在。

于 2013-01-31T18:23:16.987 回答
-1

您可以为此尝试“存在”功能:http: //perldoc.perl.org/functions/exists.html

此函数检查您的数组引用是否存在于哈希数组中

    if(exists @$val<=0) {do something}
    else {print "$val is an undefined reference";}
于 2015-03-01T14:34:48.220 回答