在示例Perl脚本在线中,我始终在变量名之前看到“ my”关键字,但我不知道它是什么意思。我尝试在线阅读手册页和其他网站,但是由于我的使用方式和手册之间存在差异,因此我很难分辨它的用途。
例如,在本文中,它用于获取数组的长度: 在Perl中查找数组的大小
但是手册说:
my声明列出的变量在包围的块,文件或eval中是局部的(按词法)。如果列出了多个值,则该列表必须放在括号中。
它有什么作用,如何使用?
在示例Perl脚本在线中,我始终在变量名之前看到“ my”关键字,但我不知道它是什么意思。我尝试在线阅读手册页和其他网站,但是由于我的使用方式和手册之间存在差异,因此我很难分辨它的用途。
例如,在本文中,它用于获取数组的长度: 在Perl中查找数组的大小
但是手册说:
my声明列出的变量在包围的块,文件或eval中是局部的(按词法)。如果列出了多个值,则该列表必须放在括号中。
它有什么作用,如何使用?
Answers:
my限制变量的范围。可以看到变量的范围。将变量的范围缩小到需要变量的位置是良好编程的基本方面。它使代码更具可读性,并且不易出错,并带来了很多好处。
如果不使用声明变量my,则会创建一个全局变量。这是要避免的。using use strict;告诉Perl,您希望避免隐式创建全局变量,这就是为什么您应该始终在程序中使用use strict;(和use warnings;)的原因。
var和JS相似let。如果没有'use strict';JS,则可以不使用任何关键字声明新的全局变量,这不是最佳实践。
let和var作用以及应如何使用它们?” 是的,答案将大致相同。(JS的let变量与Perl的my变量很像,只是let无法捕获变量。)
use strict;?但这不是问题,use strict;它的作用远不止于此。或者,也许您想传达的信息会my限制vars的使用范围let和var行为,但这几乎是答案的第一句话。3)如果您希望以不同的方式回答问题,那就是答案。
快速总结: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)。
their?
our:stackoverflow.com/questions/845060/...
通过my()的私有变量是的主要文档my。
在您提到的数组大小示例中,它不用于查找数组的大小。它用于创建一个新变量来保存数组的大小。
my至少没有考虑到它。标量赋值运算符(=)强制在上执行标量上下文@arr。