5部 関数リファレンス

continue

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

関連記事