从“我们的” perldoc:
our has the same scoping rules as my, but does not necessarily create a variable.
这意味着用
our
声明的变量在文件中不应该可见,因为file是最大的词法范围。但是这是错误的。为什么?
最佳答案
您可以考虑使用our
为程序包全局变量创建一个词法范围的别名。包全局变量可以从任何地方访问。这就是使它们全局化的原因。但是our
创建的名称仅在our
声明的词法范围内可见。
package A;
use strict;
{
our $var; # $var is now a legal name for $A::var
$var = 42; # LEGAL
}
say $var; # ILLEGAL: "global symbol $var requires explicit package name"
say $A::var; # LEGAL (always)
{
our $var; # This is the same $var as before, back in scope
$var *= 2; # LEGAL
say $var; # 84
}
关于perl - 为什么用 "our"声明的变量在文件中可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3626190/