看下面代码:
#!/usr/bin/perl -w
my $x = 1;
for $x (5 ... 8){
print "In the for loop, \$x=[$x]\n";
}
print "\nOut of for loop, \$x=[$x]\n";
[/perl]
输出结果如下:
[perl]
$ ./test.pl
In the for loop, $x=[5]
In the for loop, $x=[6]
In the for loop, $x=[7]
In the for loop, $x=[8]
Out of for loop, $x=[1]
即 $x 做为for循环的临时变量,当for循环退出时,$x的值被恢复。
这是Perl中for的特性,一定要牢记。
修改代码如下:
use Scalar::Util qw(refaddr);
use strict;
my $x = 1;
print "Bef the for loop, \$x=[$x], addr=" . refaddr(\$x) . "\n\n";
for $x (5 ... 8){
print "In the for loop, \$x=[$x], addr=" . refaddr(\$x) . "\n";
}
print "\nOut of for loop, \$x=[$x], addr=" . refaddr(\$x) . "\n";
输出结果如下: