Perlの比較演算子
比較演算子は、二つの値の大小について比較する演算子です。Perlには、数値を比較する数値比較演算子と文字列が辞書順でどちらが大きいかを比較する文字列比較演算子があります。
数値比較演算子
数値比較演算子は、値を数値として比較するときに利用する演算子です。
演算子 | 意味 |
---|---|
A == B | AとBは等しい |
A != B | AとBは等しくない |
A > B | AはBより大きい |
A >= B | AはB以上 |
A < B | AはBより小さい |
A <= B | AはB以下 |
比較演算子は、条件を満たすと真値、満たさない場合は偽値を返します。
Perlの真偽値については以下の記事も参考にしてください。
if文の条件部で使う
変数に代入された数値を比較するサンプルプログラムをif文を使って書いてみます。
my $num1 = 4; my $num2 = 3; if ($num1 > $num2) { print "Left is big"; }
このプログラムでは$num1には4が、$num2には3が代入されています。$num1は$num2より大きいので、条件が真になって、ブロックの中が実行されます。
三項演算子の条件部で使う
比較演算子を三項演算子の条件部で使用してみましょう。
my $num1 = 4; my $num2 = 3; my $message = $num1 > $num2 ? "OK" : "Not OK";
$num1は$num2より大きいので真が返され「OK」が$messageに代入されます。
文字列比較演算子
文字列比較演算子は文字列を辞書順で比較するときに利用する演算子です。
辞書順比較では、先頭から1文字づつ、文字コードの大きさを比べてゆきます。「a」は「b」より小さくなります。「1」は「02」より大きくなります。
演算子 | 意味 |
---|---|
A eq B | AとBは等しい |
A ne B | AとBは等しくない |
A gt B | AはBより大きい |
A ge B | AはB以上 |
A lt B | AはBより小さい |
A le B | AはB以下 |
if文の条件部で使う
文字列比較演算子をif文の条件部で使うサンプルです。
my $str1 = "1"; my $str2 = "02"; if ($num1 gt $num2) { print "Left is big"; }
論理演算子で条件を組み合わせる
論理演算子を使うと比較演算子を組み合わせた条件で使用することができます。
# $num1は1より大きい、かつ、5より小さい if ($num1 > 1 && $num1 < 5) { ... } # $num1は1より小さい、または、5より大きい if ($num1 < 1 || $num1 > 5) { ... }
論理演算子についてはこちらで解説しています。
文字列の部分位置を調べる方法
Perlの文字列比較演算子の「eq」は完全に文字列が一致するときに利用しますが、文字列の部分一致を知りたいときもありますね。そういう場合は、正規表現を使いましょう。
# $str1が「Cat」を含んでいたら if ($str1 =~ /Cat/) { ... }
正規表現については、以下で解説しています。
サンプルプログラム
数値比較と辞書順比較のサンプルです。
use strict; use warnings; # 数値比較と辞書順比較 print "1: 数値比較と辞書順比較を比べる\n"; my $num1 = "1"; my $num2 = "02"; if ($num1 < $num2) { print "数値で比較して$num1 は $num2 より小さい\n"; } if ($num1 gt $num2) { print "辞書順で比較して, $num1 は $num2 より、大きい\n"; }
実行結果
1: 数値比較と辞書順比較を比べる 数値で比較して1 は 02 より小さい 辞書順で比較して, 1 は 02 より、大きい