perl - perl(语法错误)-全局符号 “@arr1”需要明确的软件包名称

标签 perl syntax error-handling

我收到一条错误消息“全局符号“@ 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;
        }
    }
}

最佳答案

由于$arr1是数组引用,因此您可以尝试

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


$#$arr2 = $nLen;

关于perl - perl(语法错误)-全局符号 “@arr1”需要明确的软件包名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22414461/

相关文章:

jsf - 如何在jsf中创建错误页面?

python - sklearn异常错误: fitfailed warning from GridSearchCV in tensorflow

mysql GROUP BY 子句验证

perl - Perl Tk 中是否有超链接小部件?

perl - 如何在 Windows 7 中修复来自 perl 的区域设置警告

perl - 该变量不 protected

vue.js - Volar(vscode扩展): line comment syntax in . vue文件模板部分错误

ruby - 在 Vim 中禁用特定的 Ruby 正则表达式模式匹配以提高性能

perl - 如何完全镜像网页?

Vim 无法自动识别 groff(联机帮助页)文件