次のネストされたループについて考えてみます。
my %deleted_documents_names = map { $_ => 1 }
$self->{MANUAL}->get_deleted_documents();
while($sth->fetch){
.....
.....
.....
while(my ($key, $value) = each(%deleted_documents_names)){
{
if($document_name eq $key){
$del_status=1;
last;
}
}
if($del_status==1){next;}
.....
.....
.....
.....
}
ここで、3つの値(A、B、C)が2つの値(B、C)と比較されるサンプルケースを取り上げます。
First scan:
A compared to B
A compared to C
Second scan:
B compared to B
Loop is terminated.
Third scan:
C is compared with C.
この場合、Cは最初にBと比較され、最初の値になりますが、この比較はスキップされ、等しいことが判明した要素の次の要素からのみスキャンされます。最後の終了条件を削除し、スキャンの総数に対してループを実行すると、すべて正常に機能しますが、この場合、$ keyがループの最初の値ではなく、次に比較される値を参照する理由を確認する必要があります最後のキーワードで終了した後に再起動されます。
どんな助けでもありがたいです。