The "yapp" style parsing suggestion is good. If you've used that sort of parsing approach before, or want to learn it, you won't regret doing it that way.

But for some tasks it may be overkill, and this may be one of those tasks. You just want to keep a selected subset of features from the input file and format them a little differently for output. If the input is consistent in its structure and format, like your examples, then here's a different sort of hint:

{ local $/ = "}\n"; # end-of-record string # (might need "}\r\n", if data is CRLF style) while (<>) # this reads a whole multi-line record { my ( $cellname ) = ( /^\s*cell\s+(\S+)/ ); my ( $area ) = ( /area\s+(\d+)/ ); # and similarly for other items of interest... # print according to taste } }
Read up on the "s" regex modifier and other useful tricks in "perldoc perlre" to work out how you want to handle the other items you're after in each record.

Of course, if your input file format varies significantly from the examples you showed, this sort of approach will tend to be easy to break. Good luck.


In reply to Re: How can I parse grouped data? by graff
in thread How can I parse grouped data? by Anonymous Monk

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.