HTMLドキュメントをカスタムタグ(Perlインタープレーター)で解析する簡単なPerlスクリプトは何ですか?

StackOverflow https://stackoverflow.com/questions/4445712

  •  10-10-2019
  •  | 
  •  

質問

わかりました、これは私がしていることです。カスタム拡張機能(.cpm)で終了するドキュメント用のPerlインタープリターを作成しています。私は周りを見回して見つけました

のようだ HTML ::パーサー 行く方法です。私が求めているのは、ドキュメントを特別なタグで解析する簡単なチュートリアルです。たとえば、HTMLドキュメントを解析する方法を示しているものが欲しいが、いつでも <putinbold> それがそれを置き換えることが重要です <b>.

私が欲しいものの例 -

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

役に立ちましたか?

解決

で解析の重要な部分 HTML::Parser 権利を割り当てることです handlers 右に argspec. 。サンプルプログラム:

#!/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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top