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