2010-12-15 5 views
0

좋아, 내가하고있는 일이 이것이다. 내 사용자 정의 확장자 (.cpm)로 끝나는 문서에 대해 펄 인터프리터를 만들고 있습니다. 나는 주위를 둘러 보았다 및 사용자 정의 태그 (펄 인터프리터)로 HTML 문서를 구문 분석하는 간단한 Perl 스크립트는 무엇입니까?

  • https://metacpan.org/pod/HTML::TokeParser::Simple
  • http://www.justskins.com/forums/html-parser-8489.html
  • HTML::Parser이 길을 가야하는 것 같다

  • http://perlmeme.org/tutorials/html_parser.html
    • 발견했다. 내가 요구하는 것은 특별한 태그를 가진 문서를 파싱하는 간단한 튜토리얼이다. 예를 들어 HTML 문서를 구문 분석하는 방법을 알려주는 무언가를 원하지만 <putinbold>이있을 때마다 <b>으로 바꿉니다.

      내가 This is HTML talking
      <liamslanguage>say "This is Liams language speaking"</liamslanguage>
      </html>

    +0

    구문 분석 할 HTML 샘플은 어떻습니까? – Nathan

    +0

    Theres 내 예제 – liamzebedee

    답변

    8

    HTML::Parser 구문 분석의 중요한 부분이 바로 argspec (가) 오른쪽 handlers를 할당하는 것입니다

    <html>

    을 want-하는 예를 보자. 샘플 프로그램 :

    #!/usr/bin/env perl 
    
    use strict; 
    use warnings; 
    
    use HTML::Parser; 
    
    my $html; 
    sub replace_tagname { 
        my ($tagname, $event) = @_; 
    
        if ($tagname eq 'liamslanguage') { 
         $tagname = 'b'; 
        } 
    
        if ($event eq 'start') { 
         $html .= "<$tagname>"; 
        } 
        elsif ($event eq 'end') { 
         $html .= "</$tagname>"; 
        } 
    } 
    
    my $p = HTML::Parser->new(
        'api_version' => 3, 
        'start_h'  => [ \&replace_tagname,  'tagname, event' ], 
        'default_h' => [ sub { $html .= shift }, 'text'   ], 
        'end_h'  => [ \&replace_tagname,  'tagname, event' ], 
    ); 
    $p->parse(do { local $/; <DATA> }); 
    $p->eof(); 
    
    print $html; 
    
    __DATA__ 
    <html> 
    This is HTML talking 
    <liamslanguage>say "This is Liams language speaking"</liamslanguage> 
    </html> 
    
    +0

    대단히 감사합니다. 이것은 매우 유용하고 유익합니다. 엄지 위로! – liamzebedee

    +0

    Liam E-p : 반갑습니다. :-) –

    +0

    오, 또 다른 질문입니다. 태그 사이에서 데이터를 어떻게 얻을 수 있습니까? – liamzebedee