我刚刚遇到了一些非常怪异的行为,我真的无法解释:的Perl做... while和最后一个命令
do {
my $qry = $self->getHTMLQuery(undef, $mech->content());
next if (!defined($qry));
push(
@prods,
map { 'http://www.XXXXYYYX.com'.$_->attr('href') }
$qry->query('div.prodInfo div.prodInfoBox a.prodLink.GridItemLink')
);
$qry->delete();
$TEST++;
last if ($TEST >= 10);
} while(eval { $mech->follow_link(class => 'jump next') });
print "WHILE ENDED\n";
上面的代码永远不会打印“而结束”,尽管它似乎出门while循环时$TEST
> = 10
但以下代码不打印“WHILE截至”:
do {
my $qry = $self->getHTMLQuery(undef, $mech->content());
next if (!defined($qry));
push(
@prods,
map { 'http://www.XXXXYYYX.com'.$_->attr('href') }
$qry->query('div.prodInfo div.prodInfoBox a.prodLink.GridItemLink')
);
$qry->delete();
$TEST++;
} while(eval { $mech->follow_link(class => 'jump next') } && $TEST <= 10);
print "WHILE ENDED\n";
在这两种测试中,初始值为0.
是last
的行为do...while
与for
和while {...}
的行为不同吗?
我认为你说的“上面的代码”第二次,你实际上是指“的代码*之下*“ – TLP