論理演算子
!$aであれば、「$aが真でなければTRUEを返す」つまり$aがTRUEでない(FALSE)ってことです。
「!」は論理演算子の事で、「not」を表します。日本語でいうところの「〜ではない」に相当します。なので条件文で使われると通常の判定の逆の判定をすることになります。
なるほど$Aと$Bが両方とも否定であればTRUEを返すということですね。
でも$Aも$Bとも変数の場合、どういう場合が真や偽となるんですか?
条件の否定ですね。
ところで、CGIです、とありますが、Perlです、ですよね?
Perlとも言うんですかねぇ?
たぶんそうです。
その辺よくわかりません、すいません。
「!」は論理演算子の否定を表す記号で、
$A == 真 のときは !$A == 偽
$A == 偽 のときは !$A == 真
になります。
ですので、
!$A && !$B
は、$Aも$Bも共に成立しない場合に真になります。
もし$Aが数値なら、
($A == 0) && ($B == 0)
と同じ意味です。
大変わかりやすい解説ありがとうございます。
数値の場合は eq 0 が真で ne 0 が偽だったんですね。
今回の場合は$A、$B両方の数値に0が入っていればTRUEを返すということですね。
http://allabout.co.jp/career/cgiperl/closeup/CU20030508A/
「CGI・Perl」サイト閉鎖のお知らせ - All About
論理否定演算子です。
http://nekopps.hp.infoseek.co.jp/perl/tips6.html
Perl言語においての"真偽"とは
Perlにおける真偽についてはこのサイトを参照してください。変数$A, $Bに入る値を評価して真偽が決まります。
Perlとはプログラミング言語の一種です。
PerlやC言語、PHPで書かれたスクリプトのことをCGIと呼びます。
上に上げたサイトは1例ですが、Perlについての入門サイトはいいものがたくさんあります。CGIを扱いたいのなら全体にざっとでも目を通してみてはどうでしょうか?
perlの真偽は単純なんですが、1つだけ気をつけなければいけません。
変数の中が文字列か数字かです
数字の場合
0 偽
0以外 真
文字列の場合
”” 偽 (文字がない状態)
”0” 真 (0という文字)
”ABC” 真
文字列とは””で囲まれたものをさします
”0”は真なんです
なるほど・・・
変数$Aが
0, ’0’ ””(NULL)
の時 !$Aは真になります
$SC0=”ABC”;
$SC1=””;
$SC2=1;
$SC3=0;
$SC4=’1’;
$SC5=”0”;
print qq(Content-type: text/html¥n¥n<HTML><BODY>);
if(!$SC0){
print qq(0);
}
if(!$SC1){
print qq(1);
}
if(!$SC2){
print qq(2);
}
if(!$SC3){
print qq(3);
}
if(!$SC4){
print qq(4);
}
if(!$SC5){
print qq(5);
}
print qq(</BODY></HTML>);
exit;
のようなCGIを書いてみれば分かると思いますが
135がかえることからも分かると思います
””も「!$A」と同じ意味だったとは・・・
0と”0”はわからなくもなかったのですが。
””が偽となるのは文字列の時だけだと思ってました。
なるほど$Aと$Bが両方とも否定であればTRUEを返すということですね。
でも$Aも$Bとも変数の場合、どういう場合が真や偽となるんですか?