错误:无法将未定义的值用作ARRAY引用

时间:2013-01-31 18:21:33

标签: perl

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

我正在检查这样的事情:

我有一个$val,其中有一系列哈希值。现在我正在检查该数组是否为空:

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

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

  

不能将未定义的值用作ARRAY参考

如何检查$val是否为空?

5 个答案:

答案 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";}