2010-09-27 20 views
11

Chín năm trước khi tôi bắt đầu phân tích cú pháp HTML và văn bản miễn phí với Perl, tôi đọc số Data Munging with Perl cổ điển. Có ai biết nếu David đang có kế hoạch cập nhật sách hoặc nếu có những cuốn sách hoặc trang web tương tự mà các mô-đun phân tích cú pháp mới như XML-Twig, Regexp-Grammars, v.v ..., được giải thích không? Tôi giả định rằng trong chín năm qua một số mô-đun vẫn tốt như trước đây, một số mô-đun được cập nhật nhưng với các phương pháp mới thú vị và một số phương pháp thay thế tốt hơn. Ví dụ: vẫn còn Parse-RecDescent tùy chọn duy nhất để phân tích cú pháp văn bản miễn phí hoặc sẽ là Perl 6 ảnh hưởng đến việc thay thế Regexp-Grammars trong nhiều trường hợp?Mô-đun Perl nào thích hợp cho việc truyền dữ liệu?

Tôi đã bốn năm mà không khai thác HTML, XML hoặc khai thác dữ liệu văn bản miễn phí với Perl, vì vậy có lẽ bộ công cụ của tôi trong lĩnh vực này hơi lỗi thời. Do đó, bất kỳ phản hồi nào về thao tác HTML và DOM, trích xuất/xác minh liên kết, kiểm tra web như Cơ chế, thao tác XML và phân tích cú pháp văn bản miễn phí, từ những người cập nhật các mô-đun CPAN hiện tại trong khu vực này sẽ được chào đón nhiều hơn.

Một số bổ sung mới cho bộ công cụ của tôi:

vẫn còn trong bộ công cụ của tôi:

Trả lời

7

Đó là không chắc rằng sẽ có một phiên bản thứ hai của "Data Munging with Perl". Tôi sợ rằng kinh tế học không tăng lên. Tuy nhiên, bạn nói đúng rằng công nghệ đã di chuyển một chặng đường dài kể từ năm 2001 và có rất nhiều mô-đun mới và cải tiến bao gồm nhiều khu vực giống như các mô-đun được thảo luận trong sách, Ví dụ: tôi có thể ' t nhớ lần cuối tôi sử dụng XML :: Parser hoặc XML :: DOM. Tôi dường như sử dụng XML :: LibXML cho phần lớn công việc XML của tôi những ngày này. Ngoài ra, tất nhiên, cuộc thảo luận của tôi về cơ sở dữ liệu là không đầy đủ bởi vì nó không đề cập đến DBIx :: Class.

Có lẽ đó là một ý tưởng thú vị để cập nhật một số thông tin này thông qua một số bài đăng trên my Perl blog. Tôi sẽ suy nghĩ một chút. Cảm ơn ý tưởng.

+0

Một số các chi tiết cụ thể đã thay đổi, nhưng các khái niệm đều giống nhau. :) –

+0

Dave, thật vui khi đọc những bài đánh giá và công thức nấu ăn này trong blog của bạn một ngày nào đó. –

+0

Có, tôi rất muốn đọc những bài đăng đó. Nếu bạn kết thúc đăng một số cập nhật bổ sung trên blog của bạn, đó là siêu. Chúc mừng! – blunders

4

lại: Parse::RecDescent < =>Regexp::Grammars

Damian Conway đã được trích dẫn nói rằng Regexp::Grammarslà sự kế thừa choParse::RecDescent.Nhưng ngay cả như vậy nếu Parse::RecDescent vẫn nhận được công việc làm cho bạn thì tiếp tục sử dụng nó. Công cụ bạn biết rõ là tốt hơn công cụ bạn không biết!

Tuy nhiên, nếu hiệu suất là vấn đề chính và bạn đang chạy perl 5.10+ thì hãy xem xét Regexp::Grammars.

Hope Dave không ngại nhưng đây là Parse::RecDescent ví dụ đầu tiên của mình từ liệu munging với Perl (11.1.1) chuyển đổi sang 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. Đối với những bạn không có cuốn sách duy nhất "Dave đã rất tức giận" là một câu không hợp lệ :)

/I3az/

+0

noun_phase = noun_phrase? – Mike

+0

@Mike: phiền phức của nó, bạn không thể sao chép/dán từ giấy in đến đây :) Cũng phát hiện tôi 's/noun_phase/noun_phrase /' – draegtun

+1

Tất nhiên "Dave đã rất tức giận" không phải là một câu hợp lệ. Dave không bao giờ tức giận :-) –

Các vấn đề liên quan