Perl错误,不能使用Defined(@array)。我怎样才能解决这个问题?

时间:2018-10-08 18:26:42

标签: perl

我收到此错误->“不能使用'defined(@array)'(也许您应该忽略define()?)“

在这一行代码上:

if ( defined( @{ $linkbot{"$nroboton"} } ) ) {

我该如何解决?

2 个答案:

答案 0 :(得分:7)

defined测试标量值是否为undef,因此在数组上无意义。您可以在将标量用作arrayref之前测试是否已定义标量,或者是否要测试数组是否为空,只需按照错误消息中的说明删除define()即可。

# if this hash value is defined
if (defined $linkbot{$nroboton}) {

# if this referenced array has elements
if (@{ $linkbot{$nroboton} }) {

答案 1 :(得分:3)

对变量define本身使用$nroboton,和/或对匿名数组使用if (@{$linkbot{$nroboton}}),匿名数组的引用是该键的值,如所述。

一旦您需要检查其中的任何一个,就很可能还需要测试哈希$nroboton中是否存在键%linkbot,并带有regex demo < / p>

if ( exists $linkbot{$nroboton} ) { ... }   # warning if $nroboton undef

一共

if (defined $nroboton and exists $linkbot{$nroboton}) { ... }

现在,您可以检查并使用arrayref @{$linkbot{$nroboton}}中的数据。

请注意,无需对该变量进行双引号;将对其进行评估。