一般に、GOTO を避けることをお勧めします。それを念頭に置いて、私はこのトピックについて同僚と議論してきました.
次のコードを検討してください。
Line:
while( <> ) {
next Line if (insert logic);
}
ループ ラベルの使用は goto としてカウントされますか?
これは perldoc の perlsynが言わなければならないことです:
C プログラマーが Perl で特定のアルゴリズムをコード化する方法を次に示します。
for (my $i = 0; $i < @ary1; $i++) {
for (my $j = 0; $j < @ary2; $j++) {
if ($ary1[$i] > $ary2[$j]) {
last; # can't go to outer :-(
}
$ary1[$i] += $ary2[$j];
}
# this is where that last takes me
}
一方、このイディオムに慣れている Perl プログラマーが行う方法は次のとおりです。
OUTER: for my $wid (@ary1) {
INNER: for my $jet (@ary2) {
next OUTER if $wid > $jet;
$wid += $jet;
}
}
あなたはループを短絡して前進するように明示的に言っているので、これについての私の見解はノーですが、私の同僚は同意しません。これが GOTO であるかどうかを説明する説得力のある議論またはドキュメントを探しています。また、なぜこれが perl で良い習慣と見なされるか、または考慮されないかについての説明も受け入れます。