continue
continueは、while文と一緒に使われます。while文にcontinueがある場合は、条件部を再び評価する直前にcontinueブロックが実行されます。ですから、nextなどで処理を飛ばした場合でも、continueブロックは必ず実行されます。
continueを使う意義は、永遠ループを明示的に避けることにつきます。下記のスクリプトは、$iが10になるまでループを繰り返しますが、next ifで、$iが5以下の場合は処理を飛ばしてしまいます。そのため、$i++が実行されず、$iの値は1のままで、永遠にループが続きます。
my $i = 1;
while ( $i <= 10 ) {
next if $i < 5;
$i++;
}
正解は以下のように、$i++をwhileブロックの最初の行で行うことです。
my $i = 1;
while ( $i <= 10 ) {
$i++;
next if $i < 5;
}
continueを使えば、もっと明確に永遠ループを避けることができます。
my $i = 1;
while ( $i <= 10 ) {
next if $i < 5;
}continue{
$i++;
}
上記スクリプトは、whileブロックをどのように書き換えても、$i++は必ず実行されるので、永遠ループを確実に避けることができます。