redo演算子を使って繰り返し処理を先頭から実行する

redo 演算子を使用すると現在の繰り返し処理を最初から改めて実行させることができます。ここでは Perl のプログラムの中で redo 演算子の使い方について解説します。

(Last modified: )

redo演算子の使い方

redo 演算子を実行すると、その時の繰り返しを先頭の位置まで戻し改めて繰り返し処理を行います。書式は次の通りです。

redo;

例えば次の例で考えてみます。

my $count = 0;

while ($count <= 5){
  #redo演算子が実行されるとこの位置に進む

  $count++;

  if ($count == 2){
    redo;
  }

  print "$count\n";
}
print "終了\n";

上記では繰り返し処理の中で条件判断を行い、変数 $count が 2 と等しい時には redo 演算子が実行されます。 redo 演算子が実行されると繰り返し処理の最初の位置まで戻り改めて繰り返し処理が行われます。この時、次の繰り返しに進むのではなく同じ繰り返しを改めて開始することになりますので繰り返しを続行するかどうかの条件判断は行いません。

redo 演算子の場合も対象となる繰り返し処理というのは、 while 文、 until 文、 for 文、 foreach 文の他に空のブロックが対象となります。

サンプルコード

それでは簡単なサンプルを作成します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

my $count = 0;

while ($count < 5){
  $count++;

  if ($count == 5){
    redo;
  }

  print "$count\n";
}

print "End\n";

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

redo演算子を使って繰り返し処理を先頭から実行する(1)

繰り返し処理の中で変数の値が 5 と等しい場合は redo 演算子を使って繰り返し処理の先頭に処理が移動します。結果として変数の値が 5 のときはもう一度変数に 1 が加算されたあと画面に表示し、そして繰り返し処理が終了します。

-- --

Perl のプログラムの中で redo 演算子の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。