Perl помогите разобраться с HTML::Parser
Гуглил, читал, примеры смотрел, но принцип работы парсера не понимаю...
sub title_handler {
my $self = shift;
$self->handler(text => sub { print @_ }, "dtext");
$self->handler(end => "eof", "self");
}
my $p = HTML::Parser->new(
api_version => 3,
start_h => [\&title_handler, "self"],
report_tags => ['title'],
);
К примеру этот код выводит тайтл, но как его переработать чтобы он дополнительно показывал все теги h2?
Ответы (1 шт):
В принципе, не сложно. Только, надо понимать, что такое callback-функция. В данном примере callback-функции регистрируются дважды:
$self->handler(text => sub { print @_ }, "dtext");
...
start_h => [\&title_handler, "self"],
Вообще надо выяснить, какие параметры принимают эти функции. Тогда будет ясно, в какую из них добавить логику для имени тега tytle или h2.
Похоже, что в самом простом виде достаточно дополнить список тегов вторым тегом, и существующий обработчик (callback-функция sub { print @_ }) будет тупо печатать текст из обоих тегов:
т.е. попробовать в массив
report_tags => ['title'],
добавить второй тег
report_tags => [qw(title h2)],