2013-10-25 2 views
1

나는 HTML 파일을 구문 분석하고 정보를 추출하여 통계를 작성하려고합니다.HTML :: TreeBuilder에서 두 개 이상의 결과 가져 오기

하지만 내 문제는 HTML :: TreeBuilder는 1 개의 결과 만 반환하지만 Regex에 의해 잡힌 모든 결과가 필요하다는 것입니다.

#!/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

아마 '-> as_HTML'은 첫 번째 요소 만 취합니까? look_down은 배열을 반환합니다 ..'look_down'을'as_HTML'없이 덤프 해 봅니다 (배열을 볼 수 있도록) – orhanhenrik

답변

11

스칼라 컨텍스트에서 look_down의 첫 번째 결과가 반환됩니다.

연결 look_down->as_HTML의 결과로 스칼라 컨텍스트에서 사용하고 있습니다.

목록 컨텍스트에서 호출 한 다음 map을 사용하여 각 요소를 HTML로 변환하십시오.

print Dumper(map { $_->as_HTML } $tree->look_down(_tag => 'table', id => qr{post[0-9]*?})); 
+0

Thx 많이 :) perl에 새로운 것을 배우십시오. – demonking

관련 문제