Ho appena incontrato un comportamento molto strano che davvero non riesco a spiegare:Perl do ... while e ultimo comando
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";
Il codice di cui sopra mai stampe "MENTRE CHIUSO", anche se lo fa sembrare uscire dal ciclo while quando $TEST
> = 10.
Ma il codice seguente viene stampato "dURANTE CHIUSO":
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";
In entrambe le prove, il valore iniziale di $TEST
è 0.
Il comportamento di last
è do...while
diverso da for
e while {...}
?
suppongo la seconda volta che si dice "il codice di cui sopra", in realtà si intende "il codice * qui sotto * " – TLP