我在示例Perl脚本在线上看到变量名前面的“my”关键字,但我不知道它意味着什么。我尝试在线阅读手册页和其他网站,但鉴于我看到它与手册之间的区别,我很难辨别它是什么。
例如,它用于获取此帖子中数组的长度: Find size of an array in Perl
但是手册说:
我将列出的变量声明为本地(词法) 封闭块,文件或eval。如果列出了多个值,则 列表必须放在括号中。
它做什么以及如何使用?
答案 0 :(得分:131)
my
限制变量的scope。变量的范围是可以看到的。将变量的范围缩小到需要变量的位置是良好编程的基本方面。它使代码更具可读性,更不容易出错,并带来一系列派生的好处。
如果不使用my
声明变量,则会创建一个全局变量。这是应该避免的。使用use strict;
告诉Perl您希望阻止隐式创建全局变量,这就是您应该始终在程序中使用use strict;
(和use warnings;
)的原因。
答案 1 :(得分:25)
快速摘要:my
创建一个新变量,local
暂时修改变量的值
在下面的示例中,$ :: a在“全局”命名空间中引用$ a。
$a = 3.14159;
{
my $a = 3;
print "In block, \$a = $a\n";
print "In block, \$::a = $::a\n";
}
print "Outside block, \$a = $a\n";
print "Outside block, \$::a = $::a\n";
# This outputs
In block, $a = 3
In block, $::a = 3.14159
Outside block, $a = 3.14159
Outside block, $::a = 3.14159
即,local
暂时更改变量的值,但仅在其存在的范围内。
来源:http://www.perlmonks.org/?node_id=94007
<强>更新强>
关于our
和my
之间的差异,请参阅
(感谢 ThisSuitIsBlackNot )。
答案 2 :(得分:4)
Private Variables via my()是my
的主要文档。
在您提到的数组大小示例中,它不用于查找数组的大小。它用于创建一个新变量来保存数组的大小。