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

Perlのwhile文とdo...while文のサンプルです。条件で処理の繰り返しを制御します。

目次

while文 while文
  while文でlastを使用する
  while文でnextを使用する
do...while文 do...while文
  do...while文でlastを使用する
  do...while文でnextを使用する
演算子 比較演算子

while文

while(条件){
       実行される処理
}
  • 条件がtrueの間、処理を繰り返します。
  • 条件がfalseの場合、ループ処理を終了します。
  • 最初の条件の判定でfalseの場合、ループは1回も実行されません。
  • 処理に、条件をfalseにするロジックがないと無限ループになるので注意が必要です。

while文のサンプルです。

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

my $i = 0;

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

7行目は値が5より小さい間、処理を繰り返します。

while文でlastを使用する

while文でlastを使用するサンプルです。lastは、Javaのbreakにあたります。

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

my $i = 0;

while (1) {
    if ($i == 3) {
    	last;
    }
	print $i; # 0 1 2が出力される
	$i++;
}

9行目のlastは、7~13行目のwhile文を抜けます。
7行目は、条件をtrueにしています。lastがないと無限ループになるので注意して下さい。

while文でnextを使用する

while文でnextを使用するサンプルです。nextは、Javaのcontinueにあたります。

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

my $i = 0;

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

10行目のnextは、次は7行目を実行します。そのため12行目は実行されません。

do...while文

do {
       実行される処理
} while (条件);
  • 条件がtrueの間、処理を繰り返します。
  • 条件がfalseの場合、ループ処理を終了します。
  • 必ず1回は処理が実行されます。
  • 処理に、条件をfalseにするロジックがないと無限ループになるので注意が必要です。

do...while文のサンプルです。

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

my $i = 0;

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

10行目は値が5より小さい間、処理を繰り返します。

do...while文でlastを使用する

do...while文でlastを使用するサンプルです。

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

my $i = 0;

do{
    if ($i == 5) {
    	last;
    }
	print $i; #0 1 2 3 4が出力される
	$i++;
}while (1)

9行目のlastは、7~13行目のdo...while文を抜けます。
13行目は、条件をtrueにしています。lastがないと無限ループになるので注意して下さい。
注意:実行できますが以下の警告が出ます。
Can't "last" outside a loop block at test1.pl line 9.

do...while文でnextを使用する

do...while文でnextを使用するサンプルです。

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

my $i = 0;

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

10行目のnextは、想定の動きになりません。nextでループを抜けてしまっています。
注意:実行できますが以下の警告が出ます。
Can't "next" outside a loop block at test1.pl line 10.

比較演算子

上記コードの<は比較演算子です。
以下は、数値の比較演算子の一覧です。
Perlに===はありません。

比較演算子 説明
a == b aとbの値は等しい
a != b aとbの値は等しくない
a > b aはbより大きい
a >= b aはbより大きい または 等しい
a < b aはbより小さい
a <= b aはbより小さい または 等しい

関連の記事

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

△上に戻る