2010-09-27 3 views
11

Il y a neuf ans, quand j'ai commencé à analyser du HTML et du texte libre avec Perl, j'ai lu le classique Data Munging with Perl. Est-ce que quelqu'un sait si David envisage de mettre à jour le livre ou s'il existe des livres ou des pages Web similaires où les nouveaux modules d'analyse comme XML-Twig, Regexp-Grammars, etc, sont expliqués? Je suppose que dans les neuf dernières années certains modules sont encore aussi bons qu'ils l'étaient, certains sont à jour mais avec de nouvelles méthodes intéressantes et certains ont de meilleurs remplacements. Par exemple, est toujours Parse-RecDescent la seule option pour l'analyse de texte libre ou sera le Perl 6 a influencé Regexp-Grammars son remplacement dans de nombreux scénarios?Quels modules Perl sont bons pour la fusion de données?

Cela faisait quatre ans que je n'avais pas de base de données HTML, XML ou de texte libre active avec Perl, donc ma boîte à outils dans ce domaine est probablement un peu obsolète. Par conséquent, toute rétroaction pour la manipulation du HTML et du DOM, l'extraction/la vérification des liens, les tests sur le Web comme Mechanize, la manipulation XML et l'analyse libre du texte des personnes à jour avec les modules CPAN actuels seront les bienvenues.

Quelques nouveautés à ma boîte à outils:

encore dans ma boîte à outils:

Répondre

7

Il est Il est peu probable qu'il y aura une deuxième édition de "Data Munging with Perl". J'ai peur que les facteurs économiques ne s'empilent pas. Mais, vous avez raison, la technologie a beaucoup évolué depuis 2001 et il y a beaucoup de modules nouveaux et améliorés qui couvrent une grande partie de la même zone que les modules discutés dans le livre, par exemple, je peux Je me souviens de la dernière fois que j'ai utilisé XML :: Parser ou XML :: DOM. Je semble utiliser XML :: LibXML pour la majorité de mon travail XML ces jours-ci. Bien sûr, ma discussion sur les bases de données est incomplète car elle ne mentionne pas DBIx :: Class.

Peut-être que ce serait une idée intéressante de mettre à jour certaines de ces informations par le biais de certains messages sur my Perl blog. Je vais y réfléchir. Merci pour l'idée.

+0

Certains des détails peut-être changé, mais les concepts sont les mêmes. :) –

+0

Dave, ce serait un plaisir de lire ces commentaires et des recettes un jour sur votre blog. –

+0

Oui, je serais très intéressé par les poste aussi bien. Si vous finissez par poster des mises à jour supplémentaires sur votre blog, ce sera super. À votre santé! – blunders

4

re: Parse::RecDescent < =>Regexp::Grammars

Damian Conway a été cité en disant que Regexp::Grammarsest le successeur deParse::RecDescent.Mais même si Parse::RecDescent obtient toujours le travail pour vous, alors continuez à l'utiliser. L'outil que vous connaissez est meilleur que l'outil que vous ne connaissez pas!

Toutefois, si la performance est une question clé et que vous exécutez perl 5.10+ alors ne considèrent Regexp::Grammars.

espoir Dave ne me dérange pas, mais voici son premier Parse::RecDescent exemple de données munging avec Perl (11.1.1) converti en 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. Pour ceux que vous n'avez pas le livre que « Dave a très en colère » est une phrase invalide :)

/I3az/

+0

noun_phase = noun_phrase? – Mike

+0

@Mike: Son ennuyeux vous ne pouvez pas copier/coller à partir de papier imprimé ici :) Bien repéré, j'ai 's/noun_phase/noun_phrase /' – draegtun

+1

Bien sûr, "Dave s'est très fâché" n'est pas une phrase valide. Dave ne se fâche jamais :-) –

Questions connexes