Perl入門 ≫ LESSON7 比較演算子
判定とは?
数値や文字列は比較することができます。
二つの関係を比較するのに演算子を使います。
関係演算子
数値や文字列の関係は、真または偽として判定されます。
真の場合は1を返し、偽の場合は何も返しません。
比較演算子
数値や文字列を比較した結果は、大きい(1)・等しい(0)・小さい(-1)として判定されます。
数値
数値を比較する演算子には次のようなものがあります
a < b | a < bなら真・それ以外は偽 (aはbよりも小さい) |
---|---|
a > b | a > bなら真・それ以外は偽 (aはbよりも大きい) |
a <= b | a <= bなら真・それ以外は偽 (aはb以下) |
a >= b | a >= bなら真・それ以外は偽 (aはb以上) |
a == b | a == bなら真・それ以外は偽 (aとbは等しい) |
a != b | a != bなら真・それ以外は偽 (aとbは等しくない) |
a <=> b | a > bなら1,a == bなら0,a < bなら-1 |
最後の一つが比較演算子、あとは関係演算子です。
my $kekka = 6 < 12;
print "6 < 12 : $kekka\n";
$kekka = 6 > 12;
print "6 > 12 : $kekka\n";
$kekka = 10 <= 9;
print "10 <= 9 : $kekka\n";
$kekka = 10 >= 10;
print "10 >= 10 : $kekka\n";
$kekka = 6 == 6;
print "6 == 6 : $kekka\n";
$kekka = 6 != 7;
print "6 != 7 : $kekka\n";
$kekka = 6 <=> 12;
print "6 <=> 12 : $kekka\n";
結果は以下。
6 < 12 : 1
6 > 12 :
10 <= 9 :
10 >= 10 : 1
6 == 6 : 1
6 != 7 : 1
6 <=> 12 : -1
数値を変えて色々試してみて下さい。
文字列
文字列を比較する演算子には次のようなものがあります
a lt b | a lt bなら真・それ以外は偽 (aはbよりも小さい) |
---|---|
a gt b | a gt bなら真・それ以外は偽 (aはbよりも大きい) |
a le b | a le bなら真・それ以外は偽 (aはb以下) |
a ge b | a ge bなら真・それ以外は偽 (aはb以上) |
a eq b | a eq bなら真・それ以外は偽 (aとbは等しい) |
a ne b | a ne bなら真・それ以外は偽 (aとbは等しくない) |
a cmp b | a gt bなら1,a eq bなら0,a lt bなら-1 |
最後の一つが比較演算子、あとは関係演算子です。
文字列の大きい・小さいは、辞書順に並べた時に先に来る方が小さいと考えます。
my $kekka = 'a' lt 'b';
print "'a' lt 'b' : $kekka\n";
$kekka = 'a' gt 'b';
print "'a' gt 'b' : $kekka\n";
$kekka = 'a' le 'b';
print "'a' le 'b' : $kekka\n";
$kekka = 'a' ge 'a';
print "'a' ge 'a' : $kekka\n";
$kekka = 'a' eq 'a';
print "'a' eq 'a' : $kekka\n";
$kekka = 'ab' ne 'abc';
print "'a' ne 'abc' : $kekka\n";
$kekka = 'ab' cmp 'aab';
print "'ab' cmp 'aab' : $kekka\n";
結果は以下。
'a' lt 'b' : 1
'a' gt 'b' :
'a' le 'b' : 1
'a' ge 'a' : 1
'a' eq 'a' : 1
'a' ne 'abc' : 1
'ab' cmp 'aab' : 1
文字列を変えて色々試してみて下さい。
否定
判定結果を反転させることができます。!を前に付けると「~ではない」という否定の意味になります。 よって、
my $kekka = 'a' lt 'b';
print "'a' lt 'b' : $kekka\n";
$kekka = !('a' lt 'b');
print "!('a' lt 'b') : $kekka\n";
結果は以下。
'a' lt 'b' : 1
!('a' lt 'b') :
結果が真の場合は偽に、偽の場合は真に。
1の場合は偽に、0または-1の場合は真になります。