« .com Master★★★2007試験結果発表!まであとちょっと。 | トップページ | .com Master★★★2007結果発表! »

2007年12月26日 (水)

「すぐわかるPerl」3.4 文字列としての比較

■文字列が等しいかの判定は「eq」

$a="1";
$b="01";

$aと$bは数字として解釈すれば同じ。
しかし、文字列として解釈すれば別もの。
つまり、数字としては等しいが、文字列としては等しくない。

#! C:\Perl\bin\perl -w
# compare -- hikaku jikken

$a="1";
$b="01";

if ($a == $b) {
print "hitosii\n";
}else{
print "chigau\n";
}

実行結果

C:\Documents and Settings\sironekotoro\デスクトップ>perl hikaku.pl
hitosii

==は数字としての比較を行うため、$aと$bは等しいという結果になる。

文字列として比較する場合には「eq」という演算子を利用する。

#! C:\Perl\bin\perl -w
# compare -- hikaku jikken

$a="1";
$b="01";

if ($a eq $b) {
print "hitosii\n";
}else{
print "chigau\n";
}

C:\Documents and Settings\sironekotoro\デスクトップ>perl hikaku.pl
chigau

文字列として比較したため、「違う」と判断される。

先に出現する文字コードの大きいほうが大きくなる。
cap
cat
cup
dub

次の五つは小さい順に並んでいる。
aaa
aaaa
aaab
aaaaa
aaaab

次の四つのなかに、「10」を入れるとしたらどこになるか?
000
001
010
100

000
001
010
10
100

以上のことから「02」と「1」では、先頭の1文字を比較するため
"02" > "1"
となる。

$a="1";
$b="02";
では、数字としては$bが大きく、文字列としては$aが大きい。

文字列と数字を混合して並べた場合には、数字(0~9)より文字(a~z)の方が大きいと判断される。
100
1a0
1aa
a1a
aa1
aaa

■文字列の比較演算子

$x lt "a" $xが"a"より小さい (less than)
$x gt "a" $xが"a"より大きい (greater than)
$x le "a" $xが"a"以下 である(等しいかより小さい less than equal)
$x ge "a" $xが"a"以上 である(等しいかより大きい greater than equal)
$x eq "$y" $xと$yが等しい(equal)
$x ne "$y" $xと$yが等しくない(not equal)

[問題]
問題1
if "01" == "1" {
print "true";
}else {
print "false";
}

問題2
if "01" eq "1" {
print "true";
}else {
print "false";
}

問題3
if "01" <= "1" {
print "true";
}else {
print "false";
}

問題4
if "01" le "1" {
print "true";
}else {
print "false";
}

問題5
if "02" < "1" {
print "true";
}else {
print "false";
}

問題6
if "02" lt "1" {
print "true";
}else {
print "false";
}

回答
問題1:true
問題2:false
問題3:true
問題4:true
問題5:false
問題6:true

|

« .com Master★★★2007試験結果発表!まであとちょっと。 | トップページ | .com Master★★★2007結果発表! »

Perl」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/214806/17472630

この記事へのトラックバック一覧です: 「すぐわかるPerl」3.4 文字列としての比較:

« .com Master★★★2007試験結果発表!まであとちょっと。 | トップページ | .com Master★★★2007結果発表! »