我收到此错误->“不能使用'defined(@array)'(也许您应该忽略define()?)“
在这一行代码上:
if ( defined( @{ $linkbot{"$nroboton"} } ) ) {
我该如何解决?
答案 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}}
中的数据。
请注意,无需对该变量进行双引号;将对其进行评估。