Как я могу проверить, присутствует ли идентификатор в Perl HTML :: TreeBuilder? - PullRequest
0 голосов
/ 20 января 2010

У меня есть следующий файл:

<p>
<a href="a1">A1</a>
<a href="a2">A2</a>
<a id="a3">A3</a>
<a href="a4">A4</a>
</p>

Мне нужно пропустить теги a из списка, полученного с помощью $para->look_down("tag"=>'a');, у которого атрибут id равен некоторому значению. Я делаю:

$str = '';
$str = $anchor->attr('id');
if ($str != 'a3') {
    last;
}

Это не работает, когда атрибут id не определен: он выходит из цикла. Как это сделать?

Ответы [ 2 ]

2 голосов
/ 20 января 2010

Что ты имеешь в виду, что это не работает?Вы получаете ошибку или предупреждение?

Если я правильно понимаю, вы можете сделать следующее:

if ($str ne "" && $str ne "a3") 
{ 
    last; 
} 

Обратите внимание, использование ne для "не равно" вместо числа !=.

Кроме того, если вы хотите продолжить цикл вместо выпрыгивания, вы можете "пропустить", используя next; вместо last;.

0 голосов
/ 20 января 2010

Ответ RC выдаст вам предупреждения «Использование неинициализированного значения ...», если вы работаете с use strict; use warnings; (что вы должны всегда иметь в начале каждого Perl файл). Вместо проверки на пустую строку, проверьте, определена ли она:

use strict;
use warnings;

while (... something ...)
{
    my $str = $anchor->attr('id');
    next unless defined $str and $str eq 'a3';

    # now process $str
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...