You're very close.

The nested "while" loop inside your fourth "if" block is wrong. In fact, as written, it will be an infinite loop, because you're not doing anything to change the value of "$_" -- it remains true "forever".

Just reduce that fourth "if" block to one statement:

if ($_ =~ "HW/OS/Client") { $ClientServer = $_; }
Then add two more "if" blocks:
if ( $ClientServer ) { print; } if ( /^\s*$/ ) { # true when the current line is blank $ClientServer = ""; }
The point is that your "$ClientServer" variable works just fine as a state variable. Whenever it has any non-empty value, you print the current line of input, otherwise, you don't print. You go over all the lines of input with just the one outer "while" loop, and the various "if" conditions will do the right thing.

(As shown above, the blank line following the data block of interest will be included in the output. If you don't want the blank line printed, just put that "if" block above the one that does the "print".)


In reply to Re^6: How to print certain lines out of a text file. by graff
in thread How to print certain lines out of a text file. by sawdustar

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.