这个HTML :: Parser()代码在Perl中做了什么?

时间:2014-06-17 06:44:49

标签: perl html-parser

我遇到了使用HTML Parser的Perl代码,如下所示

my $p = HTML::Parser->new(text_h => [ sub {$text .= shift}, 
                                  'dtext']);

请帮助我理解这一点。

1 个答案:

答案 0 :(得分:2)

来自documentation

$p = HTML::Parser->new(api_version => 3,
                       text_h => [ sub {...}, "dtext" ]);

这将创建一个新的解析器对象,其中包含一个文本事件处理程序子例程,该子例程接收具有已解码的一般实体的原始文本。

编辑:

use HTML::Parser;
use LWP::Simple;
my $html = get "http://perltraining.stonehenge.com";
HTML::Parser->new(text_h => [\my @accum, "text"])->parse($html);
print map $_->[0], @accum;

另一个

#!/usr/bin/perl -w
use strict;
use HTML::Parser;
my $text;
my $p = HTML::Parser->new(text_h => [ sub {$text .= shift}, 
                                     'dtext']);
$p->parse_file('test.html');
print $text;

当在这样的文件上使用时:

<html>
<head>
<title>Test</title>
</head>
<body>
<h1>Test Stuff</h1>
<p>This is a test</p>
<ul>
<li>this</li>
<li>is a</li>
<li>list</li>
</ul>
</body>
</html>

产生以下输出:

Test


Test Stuff
This is a test

this
is a
list

这有帮助吗?