11

九年前,当我开始使用 Perl 解析 HTML 和自由文本时,我阅读了经典的使用 Perl 进行数据处理。有人知道 David 是否计划更新这本书,或者是否有类似的书籍或网页解释了XML-TwigRegexp-Grammars等新的解析模块?

我认为在过去的九年里,有些模块仍然和以前一样好,有些是最新的,但有新的有趣的方法,有些有更好的替代品。例如,Parse-RecDescent仍然是自由文本解析的唯一选择,还是 Perl 6 影响的 Regexp-Grammars会在许多情况下替代它?

我已经有四年没有使用 Perl 进行有效的 HTML、XML 或自由文本数据挖掘了,所以我在这方面的工具包可能有点过时了。因此,对于 HTML 和 DOM 操作、链接提取/验证、Web 测试(如 Mechanize)、XML 操作和自由文本解析的任何反馈,来自与该领域当前 CPAN 模块保持同步的人们都将非常受欢迎。

我的工具包中添加了一些新功能:

仍在我的工具箱中:

4

2 回答 2

7

“使用 Perl 进行数据处理”的第二版不太可能出现。恐怕经济学只是不成立。

但是,您是对的,自 2001 年以来技术已经取得了长足的进步,并且有许多新的和改进的模块涵盖了与本书中讨论的模块相同的领域,例如,我不记得最后一个我使用 XML::Parser 或 XML::DOM 的时间。这些天来,我的大部分 XML 工作似乎都使用 XML::LibXML。另外,当然,我对数据库的讨论是不完整的,因为它没有提到 DBIx::Class。

也许通过我的 Perl 博客上的一些帖子来更新这些信息是一个有趣的想法。我会考虑一下的。谢谢你的主意。

于 2010-09-27T07:34:20.740 回答
4

回复:Parse::RecDescent<=>Regexp::Grammars

Damian Conway曾被引述说. 但即便如此,如果仍然为您完成工作,那么请继续使用它。你熟悉的工具比你不知道的工具好!Regexp::Grammars Parse::RecDescentParse::RecDescent

但是,如果性能是一个关键问题并且您正在运行 perl 5.10+,那么请考虑Regexp::Grammars.

希望 Dave 不介意,但这是他Parse::RecDescentData Munging 中将 Perl (11.1.1) 转换为的第一个示例Regexp::Grammars

use 5.010;
use warnings;
use Regexp::Grammars;

my $parser = qr{
    <Sentence>

    <rule: Sentence>        <subject> <verb> <object>
    <rule: subject>         <noun_phrase>
    <rule: object>          <noun_phrase>
    <rule: noun_phrase>     <pronoun> | <proper_noun> | <article> <noun>

    <token: verb>           wrote | likes | ate
    <token: article>        a | the | this
    <token: pronoun>        it | he
    <token: proper_noun>    Perl | Dave | Larry
    <token: noun>           book | cat
}xms;

while (<DATA>) {
    chomp;
    print "'$_' is ";
    print 'NOT ' unless $_ =~ $parser;
    say 'a valid sentence';
}

__DATA__
Larry wrote Perl
Larry wrote a book
Dave likes Perl
Dave likes the book
Dave wrote this book
the cat ate the book
Dave got very angry

注意。对于那些你没有这本书的人来说,“戴夫很生气”是一个无效的句子:)

/I3az/

于 2010-09-27T12:26:17.177 回答