我在许多标准书籍中看到了许多代码,其中我的代码被用于如下循环。
类型 1-
foreach my $mykey ( keys %myhash) {
......
}
或者
while(my $line = <$filehandle> ) {
.....
}
在这里,我们为散列的每个键或每一行声明变量。这是个好主意吗?
在 C/C++/Java 中,我们通常先声明变量,然后再使用它。因此,如果我遵循该政策,那么上面的代码应该如下所示。
类型 2-
my $mykey;
foreach $mykey (keys %myhash) {
....
}
或者
my $line;
while($line = <$filehandle> ) {
....
}
它将加速代码执行(我认为),因为根据上下文我们决定可以对变量应用什么类型的操作以及它的行为。
但我主要在 Perl 中看到过 TYPE 1 代码。所以我想我错过了一些 perl 概念。有人请照亮它。
如果您要说它被声明/关联到范围一次然后才递增,请提供一些文档。我无法在任何地方得到它。我知道变量的范围在这两种情况下都会有所不同。
@ http://perldoc.perl.org/perlsub.html#Private-Variables-via-my%28%29-- my 运算符声明列出的变量在词法上被限制在封闭块中,有条件的(if/unless/ elsif/else)、循环 (for/foreach/while/until/continue)、子例程、eval 或 do/require/use'd 文件。
是否会在每个步骤中使用 my will 完成变量关联?