好的,这就是我正在做的事情。我正在为我的自定义扩展(.cpm)结尾的文档制作一个perl解释器。我环顾四周找到了
似乎HTML::Parser是要走的路。我要求的是一个简单的教程来解析带有特殊标签的文档。例如,我想要一些东西向我展示如何解析HTML文档,但只要<putinbold>
被发现,它就会用<b>
替换它。
我想要的一个例子 -
<html>
This is HTML talking
<liamslanguage>say "This is Liams language speaking"</liamslanguage>
</html>
答案 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>