考虑以下嵌套循环:
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;}
.....
.....
.....
.....
}
现在,我举一个示例,其中三个值(A,B,C)将与两个值(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 指的是下一个比较值而不是第一个值一次循环在使用 last 关键字终止后重新启动。
任何帮助将不胜感激。