【问题标题】:perl (syntax error) - Global symbol "@arr1" requires explicit package nameperl(语法错误) - 全局符号“@arr1”需要明确的包名
【发布时间】:2014-03-14 19:49:32
【问题描述】:

我收到错误消息“全局符号“@arr1”需要明确的包名称..”。 我四处搜索,发现我需要用“my”声明变量。 但就我而言,我不明白为什么我已经定义了这个数组的错误

my ($arr1, $arr2) = @_;

错误指向:

$#arr1 = $nLen;
$#arr2 = $nLen;

这是我的代码:

sub azip{
    my ($arr1, $arr2) = @_;

    if (@$arr1 != @$arr2) {
        print "Arrays \@$arr1 and \@$arr2 are not equal!\n";
        my $nLen; 
        if (@$arr1 > @$arr2) {
            $nLen = @$arr2 - 1;
            $#arr1 = $nLen;
        } 
        else {
            $nLen = @$arr1 - 1;
            $#arr2 = $nLen;
        }
    }
}

【问题讨论】:

    标签: perl syntax error-handling


    【解决方案1】:

    $arr1 是数组引用,你可以试试

    $#$arr1 = $nLen; # or $#{ $arr1 }
    

    $#$arr2 = $nLen;
    

    【讨论】:

      【解决方案2】:

      arr1 是标量值,不是数组; $#arr 期望 @arr 被定义。假设 $arr1 实际上包含对数组的引用,您可以使用

      $#$arr1 = $nLen;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-09
        • 1970-01-01
        相关资源
        最近更新 更多