今天,我在Perl中发现了一些我不知道的东西:它“本地化”了分配给迭代列表元素的变量。
当然,在Perl文档中有记录 - 但是我没有记住或阅读它。
下面的脚本演示了我的意思:
use warnings;
use strict;
my $g = 99;
foreach $g (1..5) {
p($g);
}
sub p {
my $l = shift;
printf ("%2d %2d\n", $g, $l);
}
该脚本打印输出
99 1
99 2
99 3
99 4
99 5
因为$g
被“局部化”到foreach
循环中。
就我所知,如果我在foreach
循环中添加了my
来声明$g
,则不会有任何区别:
foreach my $g (1..5) {
实际上,我最终这样做是因为它使得变量只在循环内部有效,从而让代码更加清晰易懂。
我的问题现在是:是否存在一种情况,在这种情况下我的使用my
确实会有所不同(考虑到$g
已经被全局声明)。
$g
。我会去研究一下这个问题。 - user2082599