Perl Perl_1
Perl 「 論理演算子 」短絡演算子の値 (0x8b)

目次 - Perl Index
Theme
Perl について、復習を兼ねて断片的な情報を掲載して行く連載その 0x8b 回。
Perl の論理演算子 ( logical operator ) が返す値について。
論理和 OR と 論理積 AND が返す値
Perl の論理和 OR と論理積 AND は、最後に評価した値を返すと言います。
つまり、論理演算の結果を 1 ( 真 ) または 0 ( 偽 ) で返す C 言語やその他いくつかのプログラミング言語とは違うということです。
論理和 OR が返す値を利用した処理
perlop - perldoc.jp "C スタイルの論理和" の項では、ホームディレクトリを探すための Tips として次の例を紹介しています。
$home = $ENV{'HOME'} || $ENV{'LOGDIR'} || (getpwuid($<))[7] || die "You're homeless!\n";
これは、プログラムを実行しているユーザのホームディレクトリを確認するための式です。
ハッシュ変数 %ENV は、「 Perl 「 ハッシュ 」: ( Hash ) %ENV を確認する (0x53) 」で確認した Perl 組み込みのハッシュ変数で、これはプログラム実行環境の環境変数リストを持っています。
ここではまず、ホームディレクトリの情報を持っているはずの環境変数 HOME を「 $ENV{'HOME'} 」で確認しています。ここでホームディレクトリが確認出来れば、その値をスカラ変数 $home に代入して短絡します。
もし、環境変数 HOME の情報が確認出来なければ、「 $ENV{'LOGDIR'} 」の値をスカラ変数 $home に代入しようとします。ここでホームディレクトリが確認出来れば、その値をスカラ変数 $home に代入して短絡します。
しかしながら、「 HOME 」「 LOGDIR 」いずれの環境変数でも値が見つからない場合も考えられます。
その場合は、getpwuid 関数を使って、プロセスの実 uid からホームディレクトリを割り出します。ここで該当する情報が見つかれば、やはり変数 $home にその値を代入して短絡します。
これにより、これ以降の処理では $home に格納されたホームディレクトリの情報を利用することが出来ます。
それでもホームディレクトリが見つからない場合は、メッセージを表示してプログラムを終了します。die 関数については「 Perl 「 ファイルハンドル 」: "die" (0x48) 」を参照してください。
論理和の演算で、結果として単なる 真偽 値を返す C 等のプログラミング言語では、同様の処理を行うためにもう少し手数が必要になります。つまり、Perl って便利ですね。
0x8b -> 0x8c へ
次回は、論理和 OR を使ったデフォルト値の設定とその問題点、および解決方法を確認します。
「 getpwuid 」関数についてはいずれ確認する予定です。
参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。
目次 - Perl Index
Perl の論理和 OR と論理積 AND は、最後に評価した値を返すと言います。
つまり、論理演算の結果を 1 ( 真 ) または 0 ( 偽 ) で返す C 言語やその他いくつかのプログラミング言語とは違うということです。
論理和 OR が返す値を利用した処理
perlop - perldoc.jp "C スタイルの論理和" の項では、ホームディレクトリを探すための Tips として次の例を紹介しています。
$home = $ENV{'HOME'} || $ENV{'LOGDIR'} || (getpwuid($<))[7] || die "You're homeless!\n";
これは、プログラムを実行しているユーザのホームディレクトリを確認するための式です。
ハッシュ変数 %ENV は、「 Perl 「 ハッシュ 」: ( Hash ) %ENV を確認する (0x53) 」で確認した Perl 組み込みのハッシュ変数で、これはプログラム実行環境の環境変数リストを持っています。
ここではまず、ホームディレクトリの情報を持っているはずの環境変数 HOME を「 $ENV{'HOME'} 」で確認しています。ここでホームディレクトリが確認出来れば、その値をスカラ変数 $home に代入して短絡します。
もし、環境変数 HOME の情報が確認出来なければ、「 $ENV{'LOGDIR'} 」の値をスカラ変数 $home に代入しようとします。ここでホームディレクトリが確認出来れば、その値をスカラ変数 $home に代入して短絡します。
しかしながら、「 HOME 」「 LOGDIR 」いずれの環境変数でも値が見つからない場合も考えられます。
その場合は、getpwuid 関数を使って、プロセスの実 uid からホームディレクトリを割り出します。ここで該当する情報が見つかれば、やはり変数 $home にその値を代入して短絡します。
これにより、これ以降の処理では $home に格納されたホームディレクトリの情報を利用することが出来ます。
それでもホームディレクトリが見つからない場合は、メッセージを表示してプログラムを終了します。die 関数については「 Perl 「 ファイルハンドル 」: "die" (0x48) 」を参照してください。
論理和の演算で、結果として単なる 真偽 値を返す C 等のプログラミング言語では、同様の処理を行うためにもう少し手数が必要になります。つまり、Perl って便利ですね。
0x8b -> 0x8c へ
次回は、論理和 OR を使ったデフォルト値の設定とその問題点、および解決方法を確認します。
「 getpwuid 」関数についてはいずれ確認する予定です。
参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。
目次 - Perl Index
perlop - perldoc.jp "C スタイルの論理和" の項では、ホームディレクトリを探すための Tips として次の例を紹介しています。
$home = $ENV{'HOME'} || $ENV{'LOGDIR'} || (getpwuid($<))[7] || die "You're homeless!\n";
これは、プログラムを実行しているユーザのホームディレクトリを確認するための式です。
ハッシュ変数 %ENV は、「 Perl 「 ハッシュ 」: ( Hash ) %ENV を確認する (0x53) 」で確認した Perl 組み込みのハッシュ変数で、これはプログラム実行環境の環境変数リストを持っています。
ここではまず、ホームディレクトリの情報を持っているはずの環境変数 HOME を「 $ENV{'HOME'} 」で確認しています。ここでホームディレクトリが確認出来れば、その値をスカラ変数 $home に代入して短絡します。
もし、環境変数 HOME の情報が確認出来なければ、「 $ENV{'LOGDIR'} 」の値をスカラ変数 $home に代入しようとします。ここでホームディレクトリが確認出来れば、その値をスカラ変数 $home に代入して短絡します。
しかしながら、「 HOME 」「 LOGDIR 」いずれの環境変数でも値が見つからない場合も考えられます。
その場合は、getpwuid 関数を使って、プロセスの実 uid からホームディレクトリを割り出します。ここで該当する情報が見つかれば、やはり変数 $home にその値を代入して短絡します。
これにより、これ以降の処理では $home に格納されたホームディレクトリの情報を利用することが出来ます。
それでもホームディレクトリが見つからない場合は、メッセージを表示してプログラムを終了します。die 関数については「 Perl 「 ファイルハンドル 」: "die" (0x48) 」を参照してください。
論理和の演算で、結果として単なる 真偽 値を返す C 等のプログラミング言語では、同様の処理を行うためにもう少し手数が必要になります。つまり、Perl って便利ですね。
0x8b -> 0x8c へ
次回は、論理和 OR を使ったデフォルト値の設定とその問題点、および解決方法を確認します。
「 getpwuid 」関数についてはいずれ確認する予定です。
参考情報は書籍「 初めての Perl 第 6 版 」を中心に perldoc, Wikipedia および各 Web サイト。それと詳しい先輩。
目次 - Perl Index
Perl mp2 翻訳 Web コンテンツ圧縮の FAQ (d228)
Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227)
Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226)
Perl mp2 翻訳 テンプレートシステムの選択 (d225)
Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224)
Perl mp2 翻訳 チュートリアル (d223)
Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227)
Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226)
Perl mp2 翻訳 テンプレートシステムの選択 (d225)
Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224)
Perl mp2 翻訳 チュートリアル (d223)