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

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

確認環境
・Perl 5.26.3

目次

while文

while(条件式){
       実行される処理
}
  • 条件式がtrueの間、処理を繰り返します。
  • 条件式がfalseの場合、ループ処理を終了します。
  • 最初の条件式の判定でfalseの場合、ループは1回も実行されません。

コード

while文のサンプルです。

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

my $i = 0;

while ($i < 2) {
	print $i; # 0 1
	$i++;
}

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

 

while文でlastを使用する

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

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

my $i = 0;

while (1) {
	$i++;
    if ($i == 6) {
    	last;
    }
	print $i; # 1 2 3 4 5
}

10行目の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 < 3) {
	$i++;
    if ($i == 2) {
    	next;
    }
	print $i; # 1 3
}

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

do...while文

do {
       実行される処理
} while (条件式);
  • 条件式がtrueの間、処理を繰り返します。
  • 条件式がfalseの場合、ループ処理を終了します。
  • 必ず1回は処理が実行されます。

コード

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

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

my $i = 2;

do{
	print $i; # 2
	$i++;
}while ($i < 2)

10行目は値が2より小さい間、処理を繰り返します。
8行目は、2のみ出力されます。

 

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

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

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

my $i = 0;

do{
	$i++;
    if ($i == 6) {
    	last;
    }
	print $i; #1 2 3 4 5
}while (1)

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

 

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

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

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

my $i = 0;

do{
	$i++;
    if ($i == 2) {
    	next;
    }
	print $i; #1
}while ($i < 3)

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

比較演算子

上記コードの<は比較演算子です。
以下は、数値の比較演算子の一覧です。

比較演算子 説明
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のサンプル

△上に戻る