如何检查Perl的HTML :: TreeBuilder中是否存在id?

时间:2010-01-20 12:11:26

标签: html perl

我有以下文件:

<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 个答案:

答案 0 :(得分:2)

你的意思是什么不起作用?你收到错误或警告吗?

如果我理解正确,您可能想要这样做:

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

注意,使用ne表示“不等于”而不是数字!=

此外,如果您想继续循环而不是跳出,可以使用next;代替last;“跳过”。

答案 1 :(得分:0)

RC's answer如果您使用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
}