メニュー ホーム

Perlの数値、文字列比較演算子とif文のコード例

数値を比較するために、Perlは数値比較演算子を使います。

・等しい(比較) : ==(数値演算子) : eq(文字列演算子)

・等しくない : != : ne

・より小さい : < : lt

・より大きい : > : gt

・より小さいか等しい : <= : le

・より大きいか等しい : >= : ge

数値比較演算子を使った場合、結果は真か偽の値を返します。
これらの比較演算子の中には、ほかの言語とは違ってくるものもあります。
例えば、Perlでは、「等しい」ことを確認するのに、=ではなく、==を使用します。
なぜなら、=は別の用途(代入演算子)に割り当てられているからです。
また、Perlでは「等しくない」ことを確認するには、!=を使います。
なぜなら、<>は別の用途に割り当てられているからです。
また、「より大きいか等しい」には=>ではなく、>=を使います。
これも、Perlには=>が別の用途にわりあてられているからです。


文字列を比較するために、Perlは、風変わりな短い単語のような文字列比較演算子、lt、le、eq、ge、gt、neを用意しています。
これらは、2つの文字列を先頭から1文字ずつつき合わせて、それらが等しいか、あるいは標準の文字列ソート順でどちらが前に来るかを調べます。
ただし、ASCIIコードでは、大文字のほうが、小文字よりも前に来るので注意してください。

比較演算子の使用例を下記にいくつか記述します。

35 != 30 + 5  ♯偽

35 == 35.0  ♯真

’35’ eq ‘35.0’  ♯偽(文字列として比較するため)

‘fred’ lt ‘barney’  ♯偽

‘fred’ lt ‘free’  ♯真

‘fred’ eq “fred”  ♯真

‘fred’ eq ‘Fred’  ♯偽

‘ ’ gt ‘ ‘  ♯真


perlでのif文のコード例

類似するほとんどのプログラミング言語と同様に、Perlはif文を備えています。

if($name gt ‘fred’){
  print “‘$name’ comes after ‘fred’ in sorted order.\n”;
}

二者択一を行うには、elseを使います。

if($name gt ‘fred’){
  print “‘$name’ comes after ‘fred’ in sorted order.\n”;
}else{
  print “‘$name’ does not come after ‘fred’.\n”;
  print “Maybe it’s the same string, in fact.\n”;
}

C言語とは違い、必ずブレースで囲まなければなりません。
上の例のように、コードのブロックの中身をインデントすることで、コードが理解しやすくなります。


ブール値

実際には、任意のスカラー値を、if文の条件に使うことが出来ます。
これは、次のように、真または偽の値を変数に格納しておくような場合に便利です。

$is_bigger = $name gt ‘fred’;
if($is_gigger)(…)

プログラミング言語の中には、「ブール型」というデータ型を持つものがありますが、Perlは独立したブール型を持っていません。
その代わりに、次に示すような単純を使います。

・特別な値undefは偽です。
・数値の0は偽です。それ以外のすべての数値は真です。
・空文字列「”」は偽です。通常、それ以外のすべての文字列は真になります。
・ただし1つだけ例外があります。数値と文字列は等価なので、ゼロを文字列で表した’0’は、数値のゼロと同じ値、つまり偽になります。

ですから、スカラー値がundef、0、”、’0’であれば、それは偽になります。
それ以外のスカラーは、すべて真になります。

ブール値を反転させるには、単項の否定演算子!を使います。
否定演算子は、その後ろに置かれたものが真であれば偽を返し、偽であれば真を返します。

if(! $is_bigger){
  ♯ $is_biggerが真でなければ何かを行う
}



カテゴリー:役に立つ話

better

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です