Perl入門 ≫ LESSON7 比較演算子

判定とは?

数値や文字列は比較することができます。
二つの関係を比較するのに演算子を使います。

関係演算子
数値や文字列の関係は、またはとして判定されます。
真の場合は1を返し、偽の場合は何も返しません。

比較演算子
数値や文字列を比較した結果は、大きい(1)等しい(0)小さい(-1)として判定されます。

数値

数値を比較する演算子には次のようなものがあります

数値の関係・比較演算子
a < ba < bなら真・それ以外は偽
(aはbよりも小さい)
a > ba > bなら真・それ以外は偽
(aはbよりも大きい)
a <= ba <= bなら真・それ以外は偽
(aはb以下)
a >= ba >= bなら真・それ以外は偽
(aはb以上)
a == ba == bなら真・それ以外は偽
(aとbは等しい)
a != ba != bなら真・それ以外は偽
(aとbは等しくない)
a <=> ba > 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 ba lt bなら真・それ以外は偽
(aはbよりも小さい)
a gt ba gt bなら真・それ以外は偽
(aはbよりも大きい)
a le ba le bなら真・それ以外は偽
(aはb以下)
a ge ba ge bなら真・それ以外は偽
(aはb以上)
a eq ba eq bなら真・それ以外は偽
(aとbは等しい)
a ne ba ne bなら真・それ以外は偽
(aとbは等しくない)
a cmp ba 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の場合は真になります。

ページのトップへ戻る