関係演算子
if文などの条件分岐の時には条件式の内容が真か偽かによって処理を分けます。条件式には「xxxと等しい」とか「xxxよりも大きい」などを指定することになります。この条件式の中で使用されるのが関係演算子です。
まずは関係演算子の種類を確認します。
演算子(数値) | 演算子(文字列) | 記述例 | 意味 |
---|---|---|---|
== | eq | a == b | bがaに等しい |
!= | ne | a != b | bがaに等しくない |
> | gt | a > b | bよりaが大きい |
>= | ge | a >= b | bよりaが大きいか等しい |
< | lt | a < b | bよりaが小さい |
<= | le | a <= b | bよりaが小さいか等しい |
関係演算子には数値を比較するための演算子と文字列を比較するための演算子の二種類が用意されています。例えば2つの値が等しいかどうかを判別する場合、数値を比較するには「==」を使い、文字列を比較するには「eq」を使います。結果として真(true)又は偽(false)を返します。
文字列を比較する場合には、両辺の文字列の値を1文字ずつ順に比較していきます。大きいか小さいかの判別は比較する2つの文字列をソートしてどちらが先にくるのかで比較しています。
なお文字列の比較の場合には数値用の演算子を使うことも出来ます。
等しいかどうかの比較
等しいかどうかを比較するには「==」又は「eq」を使います。例えば次のように記述します。
my ($num, $name); $num = 10; if ($num == 10){ print "10と等しい¥n"; } $name = "加藤"; if ($name eq "加藤"){ print "加藤です¥n"; }
この場合は変数「$num」に格納されている値が「10」と言う数値と等しいかどうかを判別します。また変数「$name」に格納されている値が「加藤」と言う文字列と等しいかどうかを判別しています。等しい場合は条件式が「真」、等しくない場合は条件式が「偽」となります。
また等しくないかどうかを比較するには「!=」又は「ne」を使います。例えば次のように記述します。
my ($num, $name); $num = 10; if ($num != 15){ print "15と等しくない¥n"; } $name = "加藤"; if ($name ne "伊藤"){ print "伊藤ではありません¥n"; }
この場合は変数「$num」に格納されている値が「15」と言う数値と等しくないかどうかを判別します。また変数「$name」に格納されている値が「伊藤」と言う文字列と等しくないかどうかを判別しています。等しくない場合は条件式が「真」、等しい場合は条件式が「偽」となります。
大きいかどうかの比較
演算子の右辺と左辺の数値の大きさを比較するには「>」「>=」「<」「<=」を使います。文字列の場合は「gt」「ge」「lt」「le」です。例えば次のように記述します。
my ($num, $name); $num = 10; if ($num > 5){ print "5よりも大きい¥n"; } $name = "abc"; if ($name gt "ABC"){ print "ABCより大きい¥n"; }
この場合は変数「$num」に格納されている値が「5」と言う数値よりも大きいかどうかを判別します。また変数「$name」に格納されている値が「ABC」と言う文字列と比較して大きいかどうかを判別しています。大きい場合は条件式が「真」、大きくない場合は条件式が「偽」となります。
文字列の場合に大きいというのは、2つの値をソートして後に出てくる方が大きい値となります。「a」と「b」なら「b」の方が大きく、「a」と「A」なら「a」の方が大きいです。
サンプルプログラム
では簡単なプログラムで確認して見ます。
use strict; use warnings; use utf8; binmode STDIN, ':encoding(cp932)'; binmode STDOUT, ':encoding(cp932)'; binmode STDERR, ':encoding(cp932)'; my ($num, $name); $num = 10; if ($num == 10){ print "$num と10は等しい¥n"; } $name = "加藤"; if ($name eq "加藤"){ print "$name と加藤は等しい¥n"; } $num = 10; if ($num != 15){ print "$num と15は等しくない¥n"; } $name = "加藤"; if ($name ne "伊藤"){ print "$name は伊藤ではありません¥n"; } $num = 10; if ($num > 5){ print "$num は5よりも大きい¥n"; } $name = "abc"; if ($name gt "ABC"){ print "$name はABCより大きい¥n"; }
上記を「test2-1.pl」の名前で保存します(文字コードはUTF-8です)。そしてコマンドプロンプトを起動し、プログラムを保存したディレクトリに移動してから次のように実行して下さい。
( Written by Tatsuo Ikura )