What happens if all I want to do is to chop out the comment from the fifth field (which is the only one that will ever contain comments) but apply the regex to what remains of the field?

Potentially, if you don't care about the other fields.

What $/ does is controls where the <> file input operator stops reading. Normally it stops at the end of each line (after the newline character), but with $/ set to "*/", it will stop reading there instead. So with one read you can throw away everything up to that point, let your localized change to $/ fall out of scope at the closing brace so that the behavior of <> is back to normal, and then read the remainder of the field after the end of the comment. You'll miss fields 1-4 as well, since they were already skipped, but you can pick up the 'more text to check' part if there is something you want to do with that. My code as written calls the <> operator once more in void context to throw that and the following newline away, but you could instead assign that to a variable and do something with it.

However, if you need to save fields 1-4 from the line where the comment ends, then you need to go with the other solution, i.e., keep track of whether you're in a comment or not and act accordingly. In that case if you are in a comment and detect */ in field five you could do two things: clear the comment flag, and remove the part up to the */ from the field. Similarly, if you are not in a comment but detect /* in field 5, you could remove the part starting with /* from the field and either set the comment flag right away (if you don't want to process that line at all) or else set a different flag that causes code at the end of the loop to set the comment flag after the line is processed.


In reply to Re: while loop logic by jonadab
in thread while loop logic 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.