将用户输入保存到数组perl时出错

时间:2015-02-28 16:38:45

标签: arrays perl

在对数组变量使用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

1 个答案:

答案 0 :(得分:1)

你宣布@ak的方式没有错。问题是你在声明之前就在第6行错过了一个分号。

Perl无法识别my @ak,因为它正在解析print语句。这使编译器感到困惑,并没有为您提供更有用的错误消息。通常,除了错误所在的行之外,在语法错误之前查看是有用的。