「すぐわかる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
| 固定リンク
「Perl」カテゴリの記事
- 「すぐわかるPerl」 8.10 ディレクトリのリカーシブ処理(その2)(2009.02.24)
- 「すぐわかるPerl」 8.10 ディレクトリのリカーシブ処理(その1)(2009.02.23)
- 「すぐわかるPerl」 7.6 マッチした文字列と、その前後の文字列を扱う変数(2008.06.17)
- 「すぐわかるPerl」 8.9 コマンドの入出力に入出力を切り替える(2008.11.12)
- 「すぐわかるPerl」 8.8 標準入出力以外のファイルの制御(2008.10.08)









コメント