Какой простой Perl-скрипт для анализа HTML-документа с пользовательскими тегами (интерпретатор Perl)? - PullRequest
0 голосов
/ 15 декабря 2010

Хорошо, это то, что я делаю.Я делаю Perl-интерпретатор для документов, которые заканчиваются в моем собственном расширении (.cpm).Я огляделся и обнаружил

Кажется, что HTML :: Parser это путь.То, о чем я прошу, - это простое руководство для разбора документа со специальными тегами.Например, я хотел бы что-то, что показывает мне, как анализировать HTML-документ, но всякий раз, когда <putinbold> обнаруживается, он заменяет его на <b>.

Пример того, что я хочу -

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

1 Ответ

8 голосов
/ 15 декабря 2010

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