【发布时间】:2013-10-06 15:55:48
【问题描述】:
我对 Perl 中的 local/our 范围几乎没有疑问。我阅读了很多文档,但我仍然很困惑。以下是困惑
-
local范围是什么?我读的是->本地复制全局变量的值,更改值,用户将使用它,在块之外它将保留全局值
Confusion ->
my做同样的事情。我看到的唯一好处是,像$package::var这样的一些变量不能用我的范围声明,但可以用本地范围声明。本地还有什么 什么是“全局”变量?
读取的是 -> 它的范围在包内。基本上我们将全局变量放在@EXPORT 数组中并使用它或附加命名空间以在其他包中使用。
doubt -> 同样,如果我们在 main 中声明具有 my 范围的变量,那么我们可以在整个包中访问该变量。那正确吗?是否可以在@EXPORT 数组中添加my 范围变量并在其他包中使用它?
我认为全局变量是用our 关键字声明的。还有其他方法吗?
这个问题可能看起来重复,但我很困惑。
【问题讨论】:
-
凯文:如何强调这一点。像我一样,我们所有的键盘都是亮点
-
在单词周围加上单引号 (`) 以突出显示。
-
关于 Perl 变量作用域的问题可能有点重复,但它非常重要。 Perl 变量非常难以理解。这在很大程度上与 Perl 的悠久历史有关,因为它从单纯的
awk和sh的替代品转变为完全面向对象的语言。曾经,所有变量都是包变量,local是您限制其范围的方式。现在,我们有了三种不同的变量类型(不要忘记state!),而这个local函数实际上并不能生成局部变量。