在示例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
。