It depends on context. Sometimes the flag approach in some guise is the cleanest solution. Often hoisting the first time code out of the loop is clearer, but may need thinking about the loop contents differently.

A frequent pattern is where some first time initialisation is needed as in a loop that finds minimum and maximum values. If that just depends on the first element of an array you can easily do that outside the loop and then skip the first element in the loop:

my $min = $values[0]; my $max = $values[0]; for my $value (@values[1 .. $#values]) { $min = $value if $value < $min; $max = $value if $value > $max ; }

Where you are really handling several phases of processing it is clearer to use a loop for each phase. A first loop to skip over initial stuff from a file that isn't interesting for example, then a second loop to process the interesting bit.

Even where you have special case code in the loop, often you don't need a flag variable. Just make use of undef handling. For example:

my $firstMatchline; while (<DATA>) { next if !conditionMet($_); $firstMatchline //= $.; ... }

If you have specific examples, show us and we'll do what we can to help.

Premature optimization is the root of all job security

In reply to Re: Easiest way to do something only on first iteration of loop by GrandFather
in thread Easiest way to do something only on first iteration of loop by ibm1620

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.