MTでPerlを学ぶ(その5・ifによる条件判断)

前回から1か月以上間があいてしまいましたが、「MTでPerlを学ぶ」の第5回です。

Perlをはじめ、プログラムの中では、「条件によって処理を分ける」ことが頻繁に出てきます。
Perlでは、条件判断は「if」という命令で行います。

1.条件判断の基本

以下のような例があるとします。

ある施設の入場料金は、12才未満が500円、それ以外は1,000円です。

この入場料金を求めるプログラムを、Perlで作ることを考えます。
例えば、変数$ageに年齢が入っているものとして、変数$feeに料金を求めるようにするものとします。

この問題では、「年齢が12才未満かどうか」によって入場料金が変わります。
この「年齢が12才未満かどうか」というのが、条件にあたります。
変数$ageに年齢が入っているなら、「$ageの値が12未満かどうか」という条件を判断します。

2.条件判断とif文

条件を判断してプログラムの流れを変えるには、「if」という命令を使います。

以下の図のように、条件が成り立つかどうかで、行う処理を変えたいとします。






図を大きく表示

この図をif文で書き表すと、以下のようになります。

if (条件) {
    条件が成立したときの処理
}
else {
    条件が成立しなかったときの処理
}

「条件」の書き方はいくつかありますが、2つの値を比較する書き方をよく使います。
Perlでは、2つの値を数値として比較する場合と、文字として比較する場合で、書き方が異なります(以下の表の通り)。

条件数値として比較する場合の
条件の書き方
文字として比較する場合の
条件の書き方
AとBが等しいA == BA eq B
AとBが異なるA != BA ne B
AがBより大きいA > BA gt B
AがBより小さいA < BA lt B
AがB以上A >= BA ge B
AがB以下A <= BA le B

3.if文を使った例

ここまでの話に基づいて、最初にあげた「ある施設の料金を求める」という例を作ってみます。
変数$ageに年齢が入っているものとして、変数$feeに料金を求めには、以下のように書きます。

if ($age < 12) {
    $fee = 500;
}
else {
    $fee = 1000;
}

上記を含むインデックステンプレートのサンプルをダウンロード

1行目のif文で、変数$ageの値が12未満(12より小さい)かどうかを判断します。
この条件が満たされている場合は、2行目に進みますので、変数$feeに500が代入されます。

一方、条件が満たされていない場合($ageの値が12以上の場合)は、4行目のelse以降に進みます。
そして、5行目の文によって、変数$feeに1000が代入されます。

なお、ifやelseの後の「{」と「}」のブロックは、字下げ(インデント)して書くことが一般的です。