Fis*_*ury 86 perl scope declaration
我一直在网上看到Perl脚本中的变量名前面的"my"关键字,但我不知道这意味着什么.我尝试在线阅读手册页和其他网站,但鉴于我看到它与手册之间的区别,我很难辨别它是什么.
例如,它用于获取此帖子中数组的长度: 在Perl中查找数组的大小
但手册说:
我声明列出的变量是封闭的块,文件或eval的本地(词法).如果列出了多个值,则列表必须放在括号中.
它做什么以及如何使用?
ike*_*ami 133
my限制变量的范围.变量的范围是可以看到的.将变量的范围缩小到需要变量的位置是良好编程的基本方面.它使代码更易读,更不容易出错,并带来一系列派生的好处.
如果未使用声明变量my,则将创建全局变量.这是应该避免的.使用use strict;告诉Perl您希望阻止隐式创建全局变量,这就是您应该始终在程序中使用use strict;(和use warnings;)的原因.
相关阅读:为何使用use strict;和use warnings;?
Igo*_*bin 26
快速摘要: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
Run Code Online (Sandbox Code Playgroud)
即,local暂时更改变量的值,但仅在其存在的范围内.
资料来源:http://www.perlmonks.org/? node_id = 94007
更新
关于区别our和my请看
(感谢ThisSuitIsBlackNot).