perl - "Learning Perl"第 6 版中的某些程序。不使用 "use 5.014"- 为什么?

标签 perl

我正在与 Llama 一起学习 Perl,第 6 版,第一章中的一些程序不适用于“使用 5.014”,我不知道为什么。例如:

#!/usr/bin/perl

#use 5.014;

$n = 1;
while ($n < 10) {
        $sum += $n;
        $n += 2;
}
print "The total was $sum.\n";

这适用于注释掉的“use 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”,所以我很困惑。

谢谢。

最佳答案

从 v5.12 开始,当你说 use VERSION没有别的,它会自动打开 strict .由于我们直到“子程序”一章才介绍解决您的特定问题的方法,因此我们在前几章中没有做任何要求您这样做的事情。

学习 Perl 是作为教程设计的,因此我们希望在我们明确向您展示之前,您不会在程序中做任何事情。这样,我们就不必在第一章中解释所有的 Perl。

在我使用需要它的功能之前,我倾向于不使用任何版本声明,并且在开始的章节中我们不会这样做。

祝本书的其余部分好运。 :)

关于perl - "Learning Perl"第 6 版中的某些程序。不使用 "use 5.014"- 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11805407/

相关文章:

apache - 使用 dispatch.cgi 运行 CGI 时出现 perl Dancer 问题

bash - 如何检查 perl -MCPAN -e 的返回值/退出状态?

perl - 我可以将这个 Perl 组合到一个单独的 map-grep 链中吗?

perl - 用 perl 替换指定行号上的模式

perl - 如何在 Perl 中平方一个数字?

perl - 我认为在 perl 中的 Telnet 输入缓冲区问题

perl - 为什么 Perl 的 Archive::Tar 内存不足?

regex - Perl 任意位置的可选组

perl - 如何使用 linux 或 perl 从一行中获取唯一的列值?

regex - 将分组元素存储在 perl 中的两个不同数组中?