Важной частью синтаксического анализа с 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>