在对数组变量使用strict时,我的perl脚本中出现错误。
#!/bin/perl
use strict;
use warnings;
print "Enter Attributes for query: "
my @ak = split(/\s+/, <>);
foreach (@ak) {
printf "%s\n", $_;
}
exit;
我一直收到这个错误:
Global symbol "@ak" requires explicit package name at ./test2.pl line 7.
Global symbol "@ak" requires explicit package name at ./test2.pl line 8.
Execution of ./test2.pl aborted due to compilation errors.
我使用页面here作为示例来获取用户输入。
我的数组声明有什么问题?
如果我在顶部声明数组,我发现该脚本可以正常运行,如:my @ak;
并从后续使用my
中移除@ak
。
答案 0 :(得分:1)
你宣布@ak
的方式没有错。问题是你在声明之前就在第6行错过了一个分号。
Perl无法识别my @ak
,因为它正在解析print语句。这使编译器感到困惑,并没有为您提供更有用的错误消息。通常,除了错误所在的行之外,在语法错误之前查看是有用的。