-1

我声明了这个数组:

my @array

在这个代码块中......

for (my $i=0; $i<$j; $i++) {

      do {
              // stdout operations
      } while (! ($arr != 1 ));
}

该错误专门在该} while (! ($arr != 1 ));行中。

以下是具体错误: 全局符号“$arr”需要 exer4bernal.pl 第 71 行的显式包名称。

为什么我在 2 级嵌套循环中会出现这个问题?我从来没有在只有 1 个级别。我应该改变什么来解决这个问题?谢谢!

4

2 回答 2

3

您所看到的与循环的嵌套完全无关。Perl 试图告诉你的是它不知道$arr变量。你是说@array还是$#array

于 2013-07-12T15:08:26.540 回答
-2

通常,您不应该使用do...while块。是什么$arr?该值在哪里声明?你的哪里改了while loop?是什么$j

实际上,你想用双循环做什么?这通常被认为是糟糕的编程,因为当您从处理x元素移动到y元素时,您的处理时间会增加;y2- (x * y)

也许这更像是你的意思?

for my $index ( (0..$#array) ) {
    next if $array[$index] = 1;
    ...
}

请注意,我摆脱了那种丑陋的C 风格for 循环,并将其替换为更易于理解的循环。

于 2013-07-12T16:36:58.077 回答