コンテンツにスキップ

Perl/制御構造

出典: フリー教科書『ウィキブックス(Wikibooks)』
プログラミング > Perl > Perl/制御構造

制御構造

[編集]

Perlの制御構造は、プログラムの実行フローを制御するために使用される構文です。基本的な制御構造には、条件分岐やループが含まれ、Perlの柔軟な構文により、多様な方法で記述することができます。以下に、Perlで使用される主な制御構造について説明します。

条件分岐

[編集]

if, elsif, else

[編集]

Perlでは、if文を使用して条件に基づいてコードを実行できます。elsifelseは、追加の条件やそれ以外のケースに対応します。

my $x = 10;

if ($x > 10) {
    say "x is greater than 10";
} elsif ($x == 10) {
    say "x is equal to 10";
} else {
    say "x is less than 10";
}

unless

[編集]

unlessは、条件が偽のときにブロックを実行するための構文です。ifの逆です。

my $y = 5;

unless ($y > 10) {
    say "y is not greater than 10";
}

後置if/unless

[編集]

Perlでは、簡潔な記述のために、条件文を後置することもできます。

say "x is equal to 10" if $x == 10;
say "y is not greater than 10" unless $y > 10;

ループ構造

[編集]

whileループ

[編集]

条件が真である限り、繰り返し処理を実行します。

my $i = 0;

while ($i < 5) {
    say "i is $i";
    $i++;
}

untilループ

[編集]

条件が偽の間、ループを繰り返します。whileの逆です。

my $j = 0;

until ($j == 5) {
    say "j is $j";
    $j++;
}

forループ

[編集]

特定の範囲を繰り返し処理する一般的なループです。

for (my $k = 0; $k < 5; $k++) {
    say "k is $k";
}

foreachループ

[編集]

リストの要素を順に処理するためのループです。foreachforは同じ動作をします。

my @array = (1, 2, 3, 4, 5);

foreach my $value (@array) {
    say "Value is $value";
}

後置while/until

[編集]

ifunlessと同様に、ループ条件を後置して記述できます。

my $n = 0;
say "n is $n" while $n++ < 5;

ループ制御

[編集]

next

[編集]

nextは、ループの現在の反復をスキップし、次の反復に進みます。

for my $i (1..5) {
    next if $i == 3;
    say "i is $i";
}

last

[編集]

lastは、現在のループを終了させます。breakに相当します。

for my $i (1..5) {
    last if $i == 4;
    say "i is $i";
}

redo

[編集]

redoは、現在の反復を再実行します。

my $count = 0;

while ($count < 5) {
    say "count is $count";
    $count++;
    redo if $count == 3;
}

条件演算子(3項演算子)

[編集]

Perlでは、条件演算子を使って簡潔な条件分岐を記述できます。

my $a = 10;
my $b = ($a > 5) ? "Greater than 5" : "5 or less";
say "$b";  # "Greater than 5"

まとめ

[編集]

Perlの制御構造は非常に柔軟で、多くの場面に対応できます。基本的なifwhileに加え、unlessなど、Perlならではの簡潔な記述が可能です。