2010-09-27 6 views
11

Dziewięć lat temu, kiedy zacząłem parsować HTML i darmowy tekst za pomocą Perla, czytałem klasyczny Data Munging with Perl. Czy ktoś wie, czy David zamierza zaktualizować książkę, czy też istnieją podobne książki lub strony internetowe, na których wyjaśnione są nowe moduły analizowania, takie jak: XML-Twig, Regexp-Grammars itd.?Które moduły Perla są dobre do zmieniania danych?

Zakładam, że w ciągu ostatnich dziewięciu lat niektóre moduły nadal są tak dobre, jak były, niektóre są aktualne, ale z nowymi, ciekawymi metodami, a niektóre z lepszymi zamiennikami. Na przykład, czy nadal jest dostępna Parse-RecDescent jedyna opcja do darmowego analizowania tekstu lub czy Perl 6 wpłynie na jej zmianę w wielu scenariuszach?

Mam cztery lata bez aktywnego HTML, XML lub darmowego wyszukiwania danych tekstowych w Perlu, więc prawdopodobnie mój zestaw narzędzi w tym obszarze jest nieco przestarzały. Dlatego wszelkie opinie na temat manipulacji HTML i DOM, ekstrakcji linków/weryfikacji linków, testowania stron internetowych, takich jak Mechanize, manipulowanie XML i analiza tekstu, od osób, które są na bieżąco z aktualnymi modułami CPAN w tym obszarze, będą mile widziane.

Niektóre nowe dodatki do mojego zestawu narzędzi:

nadal w moim zestawie narzędzi: nie

Odpowiedz

7

Nadszedł mało prawdopodobne, że kiedykolwiek pojawi się druga edycja "Mungowania danych za pomocą Perla". Obawiam się, że ekonomia po prostu się nie układa.

Ale masz rację, że technologia przeszła długą drogę od 2001 roku i jest mnóstwo nowych i ulepszonych modułów, które obejmują wiele z tego samego obszaru, co moduły omówione w książce, Na przykład mogę ". t pamiętasz, kiedy ostatnio używałem XML :: Parser lub XML :: DOM. Wydaje mi się, że obecnie używam XML :: LibXML do większości moich prac XML. Oczywiście, moja dyskusja na temat baz danych jest niekompletna, ponieważ nie wspomina o DBIx :: Class.

Być może warto byłoby zaktualizować niektóre z tych informacji za pośrednictwem niektórych postów na stronie my Perl blog. Zastanowię się. Dzięki za pomysł.

+0

Niektóre specyfiki mogły ulec zmianie, ale pojęcia są takie same. :) –

+0

Dave, byłoby miło przeczytać te recenzje i przepisy na twoim blogu. –

+0

Tak, byłbym BARDZO zainteresowany czytaniem tego postu. Jeśli w końcu publikujesz dodatkowe aktualizacje na swoim blogu, to będzie super. Twoje zdrowie! – blunders

4

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

Damian Conway został cytowany mówiąc, że Regexp::Grammarsjest następcąParse::RecDescent.Ale nawet jeśli Parse::RecDescent nadal wykonuje zadanie dla ciebie, to nadal go używaj. Narzędzie, które znasz dobrze, jest lepsze niż narzędzie, którego nie znasz!

Jeśli jednak wydajność jest kluczową kwestią i korzystasz z Perla 5.10+, zrób to pod Regexp::Grammars.

Nadzieja Dave nie ma nic przeciwko temu, ale tutaj jest jego pierwszym Parse::RecDescent przykład z Danych Munging z Perl (11.1.1) przekształca się 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. Dla tych, którzy nie masz książkę tylko „Dave dostał bardzo zły” to zdanie nieważne :)

/I3az/

+0

noun_phase = noun_phrase? – Mike

+0

@Mike: To irytujące, że nie można kopiować/wklejać z wydrukowanego papieru do tego miejsca :) Dobrze zauważyłem, że mam 's/noun_phase/noun_phrase /' – draegtun

+1

Oczywiście "Dave się bardzo rozgniewał" nie jest poprawnym zdaniem. Dave nigdy się nie denerwuje :-) –

Powiązane problemy