Perl for文 処理を繰り返すサンプル(last/next)

Perlのfor文のサンプルです。処理を繰り返す時に使用します。

目次

for文 for文 / for文のサンプル
  For文で配列の値を取得する
last ループ処理を途中で終了する(last)
  2重ループ(入れ子)のときのlast文を使用する
next ループ処理で処理をスキップする(next)
  2重ループ(入れ子)のときのnext文を使用する

for文

for (初期化式(1.値を初期化) ; 条件式(2.条件) ; 増減式(3.値を更新)){
    実行される処理
}
  • 処理を繰り返す時に使用します。最初にforを書くのでfor文と呼ばれます。繰り返しはループとも呼ばれます。
  • 初期化式は、最初に1回だけ実行されます。
  • 使用する変数をカウンター変数またはループ変数といいます。変数名はiやjがよく使用されます。
  • 条件式がtrueの間、処理を繰り返します。
  • 増減式(3.値を更新)でカウンター変数/ループ変数の値が変わります。
  • 条件式がfalseになるとループ処理を終了します。

for文のサンプル

#! /usr/bin/perl
use strict;
use warnings;

for (my $i = 0; $i < 5; $i++) {
  print $i; # 0 1 2 3 4 が出力される
}

5行目は、初期化式($i = 0)によりi は0から始まります。
増減式($i++)によりiの値は、1ずつ増えていきます。
条件式($i < 5)がtrueの間は処理を繰り返し、iが5になるとfalseになるので終了します。

for文で配列の値を取得する

#! /usr/bin/perl
use strict;
use warnings;

my @color = ("赤", "黄", "青");# 配列

for (my $i = 0; $i <= $#color; $i++) {
  print $color[$i];# 赤黄青
}

5行目は、配列です。
7行目の$#colorは2を返します。配列の最後の要素のインデックス値です。
8行目は、変数と添字で配列の値を表示しています。配列の添字は0から始まります。

ループ処理を途中で終了する(last)

last;
  • for文でlastを使用するとループ処理から抜けます。(そのブロックから抜けます)
  • 「{」(波括弧) から「}」までをブロックといいます。
  • lastは、Javaのbreakにあたります。
#! /usr/bin/perl
use strict;
use warnings;

for (my $i = 0; $i < 5; $i++) {
	if ($i == 3){
		last;
	}
	print $i; # 0,1,2が出力される
}

7行目のlastでfor文を抜けます。
9行目は、0,1,2が出力されます。

2重ループ(入れ子)のときにlast文を使用する

#! /usr/bin/perl
use strict;
use warnings;

for (my $i = 0; $i < 3; $i++) {
	for (my $j = 0; $j < 3; $j++) {
		if ($j == 0){
			last;
		}
		print "j=".$j; # 出力なし
	}
	print "i=".$i; #i=0,i=1,i=2が出力される
}

5,6行目にfor文があり2重ループ(入れ子)になっています。
8行目のlastは、内側のfor文のみ抜けます。

ループ処理で処理をスキップする(next)

next;
  • for文でnextを使用すると、ループ処理の先頭に戻ります。(ブロックの先頭位置に戻ります)
  • 「{」(波括弧) から「}」までをブロックといいます。
  • nextは、他言語のcontinueにあたります。
#! /usr/bin/perl
use strict;
use warnings;

for (my $i = 0; $i < 3; $i++) {
	if ($i == 1){
		next;
	}
	print $i; # 0 2が出力される
}

7行目のnextでループ処理の先頭に戻ります。
9行目は、0と2が出力されます。

2重ループ(入れ子)のときにnext文を使用する

#! /usr/bin/perl
use strict;
use warnings;

for (my $i = 0; $i < 3; $i++) {
	for (my $j = 0; $j < 3; $j++) {
		if ($j == 0){
			next;
		}
		print "j=".$j; # j=1,j=2,j=1,j=2,j=1,j=2が出力される
	}
	print "i=".$i; # i=0,i=1,i=2が出力される
}

5,6行目にfor文があり2重ループ(入れ子)になっています。
8行目のnextは、内側のfor文の先頭の6行目に戻ります

関連の記事

Perl if文のサンプル
Perl while文とdo…while文のサンプル

△上に戻る