トップ > Perl Tips > 真偽について


 ■ 真偽について

真偽というのは、制御構造を使う上で大切なことです。
制御構造というのは、条件によって分岐処理を行ったり、
繰り返し制御を行うものです。
この「条件」を作るときに、真偽を理解していないとたいへん困ります。
(※制御構造は次回以降2回に分けて説明します。)
条件分岐(if,unless)
繰り返し(while,until,for,foreach)

真偽というのは、「正しい」、「正しくない」という意味ではありません。
簡単に言ってしまえば「1」が「真」、「0」が「偽」になります。
ただし、ほかにも判定基準があります。

真偽の判定基準について説明する前に、1つだけ補足をしておきます。
スクリプト上で、" " や ' ' などのようなものがあると思います。
これらの記号で囲まれているものは「文字列」扱いになるということです。
英数字でも、日本語でも文字列扱いになります。
ちなみに、これらの記号で囲まれていない数字は「数値」扱いです。
(数字以外の文字列は必ず囲む必要があります)

しかし、この $x,$y は数値扱いになります。
$x = "123"; # ここでは文字列扱い
$y = $x + 1; # いずれも数値扱いになってしまう
このように、臨機応変に「数値」になったり、「文字列」になったりします。

<基本的な判定基準>
・"",''(空の文字列)、"0",'0'(文字列の0)、0(数値の0)、未定義値は「偽」。
・これ以外の文字列は「真」。
・0以外のすべての数値は「真」。

<紛らわしい判定基準>
・0.0
0.0=数値0なので「偽」。
・"0.0"
文字列「0.0」(文字列の0にも、数値の0にもなりません)なので「真」。
・3 - 3
計算結果が数値0なので「偽」。
・"3-3",'3-3'
どちらも「3-3」という文字列として扱われる(計算はされなくなります)ので「真」。

<比較演算子による真偽>
これが一番よく使われます。

== などの数値比較演算子、eq などの文字列比較演算子で、
$a == $b($aと$bの数値が等しい)
$a != $b($aと$bの数値が等しくない)
$a eq $b($aと$bの文字列が同じ)
$a ne $b($aと$bの文字列が同じでない)
などが成り立てば真、成り立たなければ偽となります。




トラックバック

このエントリーのトラックバックURL:
http://easycgi.xrea.jp/mt-tb.cgi/55