Сервер принимает веб-страниц. Клиент подключается к серверу. Perl-скрипт с использованием WWW :: Mechanize - это клиент .
Я подозреваю, что вы пытаетесь сделать следующее:
my $retries = 3;
my $resp; # response goes here
while ($retries-- > 0) {
$resp = $ua->get("http://www.google.com/");
if (! $resp->is_success) {
warn("Failed to get webpage: " . $resp->status_line);
sleep(5);
next; # continue the while loop
}
last; # success!
}
if ($retries == 0) {
die("Too many retries!");
}
# old versions of LWP::UserAgent didn't have decoded_content()
my $content = $resp->can('decoded_content') ?
$resp->decoded_content : $resp->content;
print($content);
UPDATE
Вот код, который вы поставляется в комментариях:
use WWW::Mechanize;
my $mech = new WWW::Mechanize;
eval {
$mech->get($url);
};
if([email protected]) {
print STDERR "Burst\n";
print STDERR Dumper($mech);
# my $var=$mech;
# print STDERR "var $var\n";
# if($mech=~ m/(Connection refused)/)
# {
# print "SLEEPING\n";
# sleep(5);
# redo;
# }
От perdoc -f redo
:
Команда «redo» перезапускает блок цикла без повторной оценки условного выражения. Блок «продолжить», если он есть, не выполняется. Если LABEL опущена, команда относится к самому внутреннему замкнутому циклу.
Увидев, что вы не поставили свой код в цикле, вызов redo
не имеет никакого эффекта.
Могу я спросить, где вы положили «сон (5)»? – DanFromGermany
if ($ mech = ~ m/\ (Соединение отклонено \) /) {print "SLEEPING \ n"; sleep (5); redo;} – user2702225
Я пробовал делать это. Если «Connection Refused» соответствует мне $ mech, тогда Apache должен спать в течение 5 секунд, а затем начать снова. – user2702225