【问题标题】:Perl error, cant use defined(@array). How can i fix this?Perl 错误,无法使用已定义(@array)。我怎样才能解决这个问题?
【发布时间】:2018-10-09 04:33:54
【问题描述】:

我收到这个错误 -> “不能使用 'defined(@array)' (也许你应该省略defined()?)”

在这行代码上:

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

我该如何解决这个问题?

【问题讨论】:

标签: perl


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    在变量$nroboton 本身上使用define,和/或在匿名数组中使用if (@{$linkbot{$nroboton}}),其引用是该键的值,如解释所示。

    一旦您需要检查其中任何一项,按理说您可能还需要测试哈希 %linkbot 中是否存在密钥 $nrobotonexists

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

    完全是这样

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

    现在您可以检查和处理 arrayref 中的数据,@{$linkbot{$nroboton}}

    请注意,不需要双引号该变量;它将被评估。

    【讨论】:

      猜你喜欢
      • 2012-03-16
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      • 1970-01-01
      • 2020-02-21
      相关资源
      最近更新 更多