本文へスキップ
BecomeCoder

Perlコース · 第2章 文字列と演算子 · レッスン7

論理演算子と真偽 ― かつ・または・でなければ

ブラウザで完結

導入

複数の条件を組み合わせるには論理演算子を使います。また 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))

実際に動かしてみよう

下のエディタにPerlを書いて「実行」を押すと、学習用シミュレータが print / say の出力を表示します(本物のperlではなく、教材の範囲を再現した軽量なエンジンです)。スカラ/配列/ハッシュ・制御構文・サブルーチン・正規表現(=~ / s///)なども動きます。本文の例を書き換えて動かしてみましょう(ファイル入出力・リファレンス・CPANモジュールなど一部の機能は対象外です)。

Perl — ブラウザ内で実行(学習用シミュレータ)

Perlの教材サブセットを動かす学習用シミュレータを読み込みます(本物のperlではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。