什么是简单的Perl脚本来解析带有自定义标签的HTML文档(Perl解释器)?

时间:2010-12-15 00:37:59

标签: perl html-parser

好的,这就是我正在做的事情。我正在为我的自定义扩展(.cpm)结尾的文档制作一个perl解释器。我环顾四周找到了

似乎HTML::Parser是要走的路。我要求的是一个简单的教程来解析带有特殊标签的文档。例如,我想要一些东西向我展示如何解析HTML文档,但只要<putinbold>被发现,它就会用<b>替换它。

我想要的一个例子 -

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

1 个答案:

答案 0 :(得分:8)

使用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>