If I understand the goal, you just need a one-liner:
perl -lne '$k=(/ENERGY/)?"e":"o";$c{$k}++;END{print "$c{e} $c{o}"}' da +ta.file
As for why your script only printed the number of ENERGY lines, you read the entire content of the file into the "@raw_data" array, and used that array to count those lines (in a rather strange, non-optimal way), but you didn't use the same array to count the other lines.

Instead, you went into a strange loop that tries to continue reading from the file (even though the entire file has already been read, so no more input is available). But you really don't need two passes over the data in any case; in a single pass, you can count the lines that contain ENERGY and the ones that don't.


In reply to Re: How to read lines between specific character by graff
in thread How to read lines between specific character by AG87

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.