導入
複数の条件を組み合わせるには論理演算子を使います。また Perl では「何を偽とみなすか」に独特のルールがあります。
説明
&&(かつ)・||(または)・!(否定)で条件をつなぎます。読みやすさ重視の and / or / not も同じ働きです。
Perl で偽になるのは 0・空文字 ""・文字列の "0"・未定義 undef の4つだけ。それ以外はすべて真です。
use strict;
use warnings;
my $age = 25;
if ($age >= 20 && $age < 65) {
print "現役世代\n";
}
my $name = "";
print "名前が空です\n" if !$name; # "" は偽なので ! で真になる
|| は「左が偽なら右を返す」性質があり、既定値を用意するのに便利です。似た // は「左が undef のときだけ 右を返す」演算子です。
use strict;
use warnings;
my $input = "";
my $name = $input || "ゲスト"; # "" は偽 → ゲスト
print "$name\n";
my $count; # 未定義(undef)
my $n = $count // 0; # undef のとき 0
print "$n\n";
やってみよう
$age の値を変えて条件の結果が変わることを確かめましょう。|| の左を "0" や "ゲスト以外" に変えて、どちらが返るかも見てください。
演習
my $stock = 0; について、$stock > 0 が偽のときに 売り切れ と表示してください(unless か ! を使います)。
ヒント1を見る
print "売り切れ\n" unless $stock > 0; または if (!($stock > 0))。