У меня вопрос по Perl.
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";
}
Вывод, который я получаю:
найденный цикл + 1, 1
текущий = 0, следующий цикл = 0
найденный цикл+1, 2
текущий = 1, следующий цикл = 0
найденный цикл + 1, 3
текущий = 2, следующий цикл = 0
найденный цикл+1, 4
current = 3, nextcycle = 0
current = 4, nextcycle = 0
Я ожидал этого:
найденный цикл + 1, 1
текущий = 0, следующий цикл = 1
найденный цикл + 1, 2
текущий = 1, следующий цикл = 2
найденный цикл + 1, 3
текущий = 2, следующий цикл = 3
найденный цикл + 1, 4
текущий = 3, следующий цикл = 4
current = 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";
}
Я хочу знать, почему первый циклне работал!