我正在尝试解析html文件并提取一些信息并对其进行统计。
但我的问题是,HTML :: TreeBuilder只返回1个结果,但我需要正则表达式捕获的所有结果。
#!/bin/perl
use strict;
use warnings;
use Data::Dumper;
use HTML::TreeBuilder;
my $tree = HTML::TreeBuilder->new();
$tree->parse_file('tester.html');
print Dumper($tree->look_down(_tag => 'table',id => qr{post[0-9]*?})->as_HTML);
$tree->delete;
tester.html:
<table id="post923076">
<tr>
<td>table1_result</td>
</tr>
</table>
<table id="post923076">
<tr>
<td>table2_result</td>
</tr>
</table>
我的结果:
$VAR1 = '<table id="post923076"><tr><td>table1_result</td></tr></table>';
有人有想法吗?
我缩短了文件,例如因为该文件可以满足很多这样的表格。
答案 0 :(得分:11)
在标量上下文中,返回look_down
的第一个结果。
由于链接look_down->as_HTML
,您在标量上下文中使用。
在列表上下文中调用,然后使用map
将每个元素转换为HTML。
print Dumper(map { $_->as_HTML } $tree->look_down(_tag => 'table', id => qr{post[0-9]*?}));