【发布时间】:2009-06-19 19:17:28
【问题描述】:
我正在查看Perl Monks 上的一些较旧的 Perl 代码,以了解如何使用 Win32::OLE 和 MS Word 进行编程。散布在整个代码中的是名称如 $MS::Word 等的变量,它们的声明中没有包含“my”。在 Google 上阅读了一下之后,我了解到这些被称为“包变量”而不是使用 my 声明的“词法变量”。
我的第一个问题是“包变量有什么用?”。我(认为)我了解词法变量是什么,但我不了解包变量的用途或它们的使用与词法有何不同,所以我的第二个问题是,'词法变量和包变量有什么区别?'
【问题讨论】:
-
顺便说一句,查看该代码的其他人称其为“丑陋”。我不确定如何判断它是否丑陋。有人愿意开导我吗? :)
-
在某种程度上它很丑,因为它在做 OLE。那从来都不漂亮。我对代码的主要抱怨是滥用包变量。它广泛使用它们,但从不声明一个包。这表明作者并不真正了解他所使用的工具。
-
OLE 从来都不漂亮,但 Perl 代码不必这么丑。 15 年前我不得不处理一些 Cobol 代码时,我仍然回想起那段时光。
标签: perl variables scope package lexical