我有一个perl作用域问题。PERL在foreach循环中的作用域
use strict;
use warnings;
our @cycles = (0,1,2,3,4);
foreach my $cycle (@cycles){
my $nextcycle = 0;
foreach $nextcycle (@cycles){
if ($cycle+1 == $nextcycle){
print "found cycle+1, $nextcycle\n";
last;
}
}
print "current=$cycle, nextcycle=$nextcycle\n";
}
输出I得到:
发现周期+ 1,1
电流= 0,nextcycle = 0
发现周期+ 1,2
电流= 1,nextcycle = 0
found cycle + 1,3
电流= 2,nextcycle = 0
发现周期+ 1,4
电流= 3,nextcycle = 0
电流= 4,nextcycle = 0
我预计此:
找到周期+ 1,1
电流= 0,nextcycle = 1
发现周期+ 1,2
电流= 1,nextcycle = 2
发现周期+ 1,3
电流= 2,nextcycle = 3
发现周期+ 1,4
电流= 3,nextcycle = 4
电流= 4,nextcycle = 0
我进一步修改循环看起来像这一点,得到了我想要的东西:
use strict;
use warnings;
our @cycles = (0,1,2,3,4);
foreach my $cycle (@cycles){
my $nextcycle = 0;
foreach my $tempcycle (@cycles){
if ($cycle+1 == $tempcycle){
$nextcycle = $tempcycle;
print "found cycle+1, $nextcycle\n";
last;
}
}
print "current=$cycle, nextcycle=$nextcycle\n";
}
我想知道为什么第一个循环没有工作!
[Perl的foreach循环的默认范围是什么?](http://stackoverflow.com/questions/2238576/what-is-the-default-scope-of-foreach-loop-在-perl的) – mob 2011-03-22 22:42:13