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

またまた前回からかなり間が空いてしまいましたが、「MTでPerlを学ぶ」の第6回です。
今回は、if文を使った一般的な条件判断についてお話しします。

1.if文の一般的な形

プログラムの中で条件判断を行う場合、条件が複数あって、それぞれで行う処理が異なる、というのが一般的な形です。
流れ図で表わすと、以下のような場合です。



図を大きく表示

このような流れをif文で表すと、以下のようになります。

if (条件1) {
    条件1が成立したときの処理
}
elsif (条件2) {
    条件2が成立したときの処理
}
・・・
elsif (条件n) {
    条件nが成立したときの処理
}
else {
    すべての条件が成立していなかったときの処理
}

ちなみに、他のプログラム言語では、条件を次々と指定する際に、「else if」のように書くことが多いです。
Perlの「elsif」は他の言語と異なります。
そのため、他の言語でもプログラミングをしていると、よく文法がごちゃまぜになってしまい、文法エラーを起こしやすいので、注意が必要です。

2.if文を使った例

上記のようなif文を使った例として、「現在の時間帯に応じて、異なるメッセージを出力する」という例を考えてみます。
以下の表のようにメッセージを出力するものとします。

時間帯メッセージ
0時~6時お疲れ様です
6時~12時おはようございます
12時~18時こんにちは
18時~24時こんばんは

この処理の流れを考えてみると、以下の図のようになります。



図を大きく表示

この図に沿って、実際にプログラムを書いてみると、以下のようになります。
4行目以降のif文で、変数$hourの値に応じて、「お疲れ様です」等のメッセージを出力しています。
なお、1行目の文は、「localtime」というPerlの組み込み関数を使って、現在の日付と時刻を得る処理です。
また、2行目は、現在の日付と時刻から、「時」の部分を取り出して、変数$hourに代入する処理です。

my @t = localtime;
my $hour = $t[2];
 
if ($hour < 6) {
    print 'お疲れ様です'
}
elsif ($hour < 12) {
    print 'おはようございます'
}
elsif ($hour < 18) {
    print 'こんにちは'
}
else {
    print 'こんばんは'
}

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