Я открываю ссылку с LWP
, и в ответ есть другие ссылки, которые я хочу открыть тоже, чтобы //DoSomething
на каждом из них, и среди них есть ссылка, которую я только что открыл, я думаю, это немного сбивает с толку, а вот код, я использую:Настроить цикл, чтобы начать с определенного элемента? (Perl)
my $request = GET $topic;
my $response = $ua->request($request);
usleep(52000);
my $tree = HTML::TreeBuilder->new();
$tree->parse($response->decoded_content);
my $link_1 = $tree->look_down('id' => 'link_1')->look_down('_tag' => 'a')->attr('href');
my $link_2 = $tree->look_down('id' => 'link_2')->look_down('_tag' => 'a')->attr('href');
my $link_3 = $tree->look_down('id' => 'link_3')->look_down('_tag' => 'a')->attr('href');
//then i insert them in an array
push @links, $link_1;
push @links, $link_2;
push @links, $link_3;
теперь, например, что $link_2
и $topic
такие же
foreach my $link (@links)
{
if($link ne $topic)
{
$request = GET $link;
$response = $ua->request($request);
usleep(52000);
$tree = HTML::TreeBuilder->new();
$tree->parse($response->decoded_content);
}
$json = $tree->look_down('id' => 'json_text')->attr('_content')->[0];
}
что я хочу сейчас, чтобы не открыть ссылку дважды, Потому что perl не проходит через массив, соблюдая порядок p ush, cuz я попытался в push @links, topic;
прямо в начале, а затем удостоверьтесь, что @links
не имеет ссылки вроде $topic
перед каждым push @links, $link_?
, но это не работает, другими словами, я хочу пропустить открытие ссылки дважды или напечатать в правильном порядке нажатия ,
заранее спасибо
Спасибо: D, я имею в виду об использовании аа хэш вместо этого, однако я хочу, чтобы заставить мой цикл, чтобы начать с '$ topic' первый затем продолжайте с остальными, я не знаю, возможно ли это. – Mugiwara
@ Mugiwara Взгляните на обновленный ответ, в котором показано, как загружать только те темы, если они не существуют. – Joel
Большое спасибо @Joel: D – Mugiwara