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

「MTでPerlを学ぶ」の第8回をお送りします。
今回はif文の続きで、同時に2つの条件を満たしているかどうかで処理を分ける方法を紹介します。

1.&&演算子で条件を結ぶ

以下の流れ図のように、2つの条件の両方が成立しているかどうかで、行う処理を分けたい場合もあります。


図を大きく表示

この図のように、2つの条件を同時に判断して、両方が成立しているかどうかで処理を分ける場合、以下のようにif文を書きます。
2つの条件を「&&」の演算子で結ぶことで、両方が成立しているかどうかで処理を分けることができます。

if (条件1 && 条件2) {
    条件1と条件2の両方が成立しているときの処理
}
else {
    条件1と条件2のどちらかが成立していないときの処理
}

2.例

例えば、ある試合のチケットの料金が、ファン感謝デーで以下のようになっているとします。

東京都在住の女性は500円で、それ以外は1,000円

この場合、「東京都に住んでいる」と「性別が女性」という2つの条件を同時に満たすかどうかで、料金が変わります。
在住都道府県と性別が、それぞれ変数$liveと$sexに代入されているとし、料金を変数$feeに求めたいとすると、以下のような流れで料金を判断すれば良いです。


図を大きく表示

上図の流れに沿って条件判断をif文に置き換え、料金を求めるプログラムを作ると、以下のようになります。

# 東京都在住の女性かどうかを調べる
if ($live eq '東京都' && $sex eq '女性') {
    $fee = 500;
}
else {
    $fee = 1000;
}
print "$live在住で、性別は$sexです。<br />";
print "料金は$fee円です。";

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

3.変数の値がある範囲に入っていることを調べる

&&演算子は、「変数の値が○○以上□□以下」のように、変数の値がある範囲の間に入っているかどうかを調べたいときにも使います。

「変数の値が○○以上□□以下」という条件は、「『変数の値が○○以上』と『変数の値が□□以下』の両方が同時に成立する」と読み替えることができます。
したがって、以下のようなif文で表すことができます。

if (変数 >= ○○ && 変数 <= □□) {
    変数の値が○○以上□□以下のときの処理
}
else {
    変数の値が○○以上でないか、□□以下でないときの処理
}

例えば、変数$ageの値が7以上12以下かどうかで処理を分けたい場合は、以下のように書きます。

if ($age >= 7 && $age <= 12) {
    $ageの値が7以上12以下のときの処理
}
else {
    $ageの値が7以上でないか、12以下でないときの処理
}