Hello Monks,

Long time no see! Recently I have to parse a file and export to another format. the original file is like this:

Y 034309201607258 1 #Y means header Q 02751VACANT / CLOSE #comment G .... # inner head ... ... ... T RCRC 0810010 T RDRD 0810010 A 22OP A 13O A 12O P 3472CHSK00010014 #P means inner trailer Z 034309201607258 #Z means trailer
I took this weekend to learn P::RD, and seems a little bit to understand it. but when I tried some snippet to run, it's hard to succeed as I image:
use Parse::RecDescent; use IO::All; my $text = io("xxx.DAT")->slurp; # Create and compile the source file $parser1 = Parse::RecDescent->new(q( startrule : HeadRule /.+/ms TrailerRule HeadRule : /^Y.+$/m TrailerRule: /^Z.+$/m )); $parser2 = Parse::RecDescent->new(q( startrule : HeadRule HeadRule : /^Y.+^Z.+$/ms )); # Test it print "Valid data\n" if $parser1->startrule($text); #no! print "Valid data\n" if $parser2->startrule($text); #yes
why parser1 is failed? and in order to learn P::RD, Could anyone tell me if some module parsing files( like xml or html etc> on cpan make use of P:RD?

Thanks




I am trying to improve my English skills, if you see a mistake please feel free to reply or /msg me a correction


In reply to question when learning P::RD? by xiaoyafeng

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.