我有以下文件:
<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
属性时,这不起作用:它会突破循环。怎么做?
答案 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
}