【发布时间】:2012-08-04 02:18:09
【问题描述】:
我正在学习第 6 版 Llama 的 Perl,第一章中的一些程序不适用于“使用 5.014”,我不知道为什么。例如:
#!/usr/bin/perl
#use 5.014;
$n = 1;
while ($n < 10) {
$sum += $n;
$n += 2;
}
print "The total was $sum.\n";
这适用于注释掉的“使用 5.014”,但如果包含它,我会收到以下错误:
Global symbol "$n" requires explicit package name at ch3loop.pl line 5.
Global symbol "$n" requires explicit package name at ch3loop.pl line 6.
Global symbol "$sum" requires explicit package name at ch3loop.pl line 7.
Global symbol "$n" requires explicit package name at ch3loop.pl line 7.
Global symbol "$n" requires explicit package name at ch3loop.pl line 8.
Global symbol "$sum" requires explicit package name at ch3loop.pl line 10.
Execution of ch3loop.pl aborted due to compilation errors.
但是,如果我将“my”放在变量的第一个实例之前,它仍然不会运行,但原因不同:
Global symbol "$sum" requires explicit package name at ch3loop.pl line 10.
Execution of ch3loop.pl aborted due to compilation errors.
有人可以解释发生了什么吗?我知道我可以在没有“使用 5.014”的情况下运行它,但它确实在书的封面上说第 6 版。 “涵盖 Perl 5.14”,所以我很困惑。
谢谢。
【问题讨论】:
-
如果您
use 5.0xx,从 5.11 开始的每个 perl 版本都会出现此错误。在这个版本中,strictpragma 是 enabled implicitly,除了一个衬里。
标签: perl