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++
は必ず実行されるので、永遠ループを確実に避けることができます。