九年前,当我开始用Perl解析HTML和自由文本时,我读了经典 数据Munging与Perl。有人知道大卫是否打算更新这本书,或者是否有新的解析模块所用的类似书籍或网页 XML的嫩枝, 正则表达式文法等,解释?
我假设在过去九年中,一些模块仍然和它们一样好,有些模块是最新的,但有一些新的有趣方法,有些模块有更好的替代方法。例如,仍然是 解析-RecDescent的 自由文本解析的唯一选择或将受到影响的Perl 6 正则表达式文法 在许多情况下它的替代品?
我已经四年没有使用Perl进行有效的HTML,XML或自由文本数据挖掘了,所以我的工具包可能有点过时了。因此,对于与该领域当前CPAN模块最新的人员而言,HTML和DOM操作,链接提取/验证,Web测试(如Mechanize,XML操作和自由文本解析)的任何反馈都将受到欢迎。
我的工具包的一些新增内容:
还在我的工具箱中:
它不太可能会出现第二版“带有Perl的Data Munging”。我担心经济学不会叠加。
但是,你是对的,自2001年以来技术已经走了很长一段路,而且有很多新的和改进的模块覆盖了与本书中讨论的模块大致相同的区域,例如,我不记得最后一个我使用XML :: Parser或XML :: DOM。这些天我似乎使用XML :: LibXML来完成我的大部分XML工作。当然,我对数据库的讨论还不完整,因为它没有提到DBIx :: Class。
也许通过一些帖子更新一些信息是一个有趣的想法 我的Perl博客。我会考虑一下。谢谢你的想法。
它不太可能会出现第二版“带有Perl的Data Munging”。我担心经济学不会叠加。
但是,你是对的,自2001年以来技术已经走了很长一段路,而且有很多新的和改进的模块覆盖了与本书中讨论的模块大致相同的区域,例如,我不记得最后一个我使用XML :: Parser或XML :: DOM。这些天我似乎使用XML :: LibXML来完成我的大部分XML工作。当然,我对数据库的讨论还不完整,因为它没有提到DBIx :: Class。
也许通过一些帖子更新一些信息是一个有趣的想法 我的Perl博客。我会考虑一下。谢谢你的想法。
回覆: Parse::RecDescent
<=> Regexp::Grammars
达米安康威 有人引用说 Regexp::Grammars
是接班人 Parse::RecDescent
。但即便如此 Parse::RecDescent
仍然为你完成工作然后继续使用它。你熟悉的工具比你不知道的工具更好!
但是,如果性能是一个关键问题而且您运行的是perl 5.10+,那么请考虑一下 Regexp::Grammars
。
希望戴夫不介意,但这是他的第一个 Parse::RecDescent
例子来自 数据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
NB。对于那些你没有这本书的人戴夫非常生气“是一个无效的句子:)
/ I3az /