title: Do Perl loop labels count as a GOTO?
body: <p>Generally, it is good practice to avoid GOTOs. Keeping that in mind I've been having a debate with a coworker over this topic.</p>
  
  <p>Consider the following code:</p>
  
  <pre><code>Line:
      while( &lt;&gt; ) {
          next Line if (insert logic);
      }
  </code></pre>
  
  <p><strong>Does using a loop label count as a goto?</strong> </p>
  
  <p>Here is what <a href="http://perldoc.perl.org/perlsyn.html#For-Loops" rel="noreferrer">perlsyn</a> in perldoc has to say:</p>
  
  <blockquote>
    <p>Here's how a C programmer might code up a particular algorithm in Perl:</p>
  </blockquote>
  
  <pre><code>for (my $i = 0; $i &lt; @ary1; $i++) {
      for (my $j = 0; $j &lt; @ary2; $j++) {
          if ($ary1[$i] &gt; $ary2[$j]) {
              last; # can't go to outer :-(
          }
          $ary1[$i] += $ary2[$j];
      }
      # this is where that last takes me
  }
  </code></pre>
  
  <blockquote>
    <p>Whereas here's how a Perl programmer more comfortable with the idiom might do it:</p>
  </blockquote>
  
  <pre><code>OUTER: for my $wid (@ary1) {
      INNER:   for my $jet (@ary2) {
                   next OUTER if $wid &gt; $jet;
                   $wid += $jet;
               }
         }
  </code></pre>
  
  <p>My take on this is no because you are explicitly telling a loop to short circuit and advance however my coworker disagrees, says that it is just a fancy GOTO and should be avoided. <strong>I'm looking for either a compelling argument or documentation that explains why this is or is not a GOTO.</strong> I'll also accept an explanation for why this is or is not considered good practice in perl.</p>