【发布时间】:2021-05-14 21:22:27
【问题描述】:
我正在编写必须通过或失败测试用例的脚本。所以我在一个变量中有一些价值,它是 undef。
我正在检查这样的事情:
我有一个$val,其中有哈希数组。现在我正在检查该数组是否为空:
if(@$val<=0){do something}
所以如果$val = undef,那么这会引发错误:
不能使用未定义的值作为 ARRAY 引用
我应该如何检查我的$val 是否为空?
【问题讨论】:
标签: perl
我正在编写必须通过或失败测试用例的脚本。所以我在一个变量中有一些价值,它是 undef。
我正在检查这样的事情:
我有一个$val,其中有哈希数组。现在我正在检查该数组是否为空:
if(@$val<=0){do something}
所以如果$val = undef,那么这会引发错误:
不能使用未定义的值作为 ARRAY 引用
我应该如何检查我的$val 是否为空?
【问题讨论】:
标签: perl
如果要检查标量是否为 undef,请使用 defined 运算符。
if ( not defined $val ) {
# do something
}
【讨论】:
回答您可能提出的问题分为两个部分。
首先,无条件地创建数组引用。如果您可能在$val 中通过undef,请将其提升为代码中的空数组引用,例如$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";}
【讨论】: