Skip to content

Latest commit

 

History

History
245 lines (146 loc) · 7.32 KB

globals.pod

File metadata and controls

245 lines (146 loc) · 7.32 KB

全局变量

Perl 5 提供了若干 超级全局变量,它们是真正的全局变量,而不仅仅局限于任何特定的 包。这些超级全局变量有两个缺点。第一,它们是全局变量;任何直接或间接的修改就能影响 到程序的其余部分。第二,它们太过精炼。经验丰富的 Perl 5 程序员早就记住了它们中的一 部分。很少有人能够记全这些变量。而且,它们中也只有几个是常用的。perldoc perlvar 包含这类变量的详尽列表。

管理超级全局变量

要管理这些超级全局变量的全局行为,最佳途径就是避免使用它们。当你必须用到它们时, 请在尽可能小的作用域内使用 local 来约制改动。所 调用 的代码对这些全局变量 做出的修改仍然会影响到你,但你已经降低了在你能力范围 之外 出现令人惊奇的代码 的可能。

英语名称

English 核心模块为过度使用标点的超级全局变量提供了详细的名称。用如下方式将其 导入名称空间:

随后你就可以在该名称空间作用域内使用记录在 perldoc perlvar 中的详细名称。

常用超级全局变量

大部分现代化的 Perl 5 程序只用到一部分超级全局变量。有部分全局变量只是为一些 你不太可能碰到的特殊情况而存在的。虽说 perldoc perlvar 是这些变量正规文档, 有部分变量还是值得在此提一下。

超级全局变量的替代

超距作用(Action at a distance)的罪魁祸首与IO和异常条件有关。使用 Try::Tinyexception_caveats)有助于把你和正确异常处理所含狡猾的语义隔开。用 local 局部化并复制 $! 的值可以帮助你避免因 Perl 执行隐式系统调用时的古怪行为。

你可以通过 use 引入 IO::Handle 来执行词法文件句柄(lexical_filehandles)上 的方法而非 IO 相关的超级全局变量。就地 select 一个文件句柄,接着修改 $|,即是 直接调用词法文件句柄上的 autoflush() 方法。调用特定文件句柄上的 input_line_number() 方法可以得到和 $. 等价的结果。有关其他适用方法的信息请参见 IO::Handle 文档。

POD ERRORS

Hey! The above document had some coding errors, which are explained below:

Around line 5:

A non-empty Z<>