導入
Perl の比較には、数値用と文字列用の2種類があります。ここを混同すると思わぬ結果になるので、しっかり区別しましょう。
説明
数値の比較は == != < > <= >=、文字列の比較は eq ne lt gt le ge を使います。たとえば "10" == "10.0" は数値として等しいので真ですが、"10" eq "10.0" は文字列として違うので偽になります。
| 意味 | 数値 | 文字列 |
|---|---|---|
| 等しい | == | eq |
| 等しくない | != | ne |
| より小さい | < | lt |
| より大きい | > | gt |
use strict;
use warnings;
my $a = 10;
my $b = 9;
print "aは大きい\n" if $a > $b; # 数値の比較
my $x = "apple";
my $y = "banana";
print "xが先\n" if $x lt $y; # 文字列(辞書順)の比較
真のとき Perl は 1 を、偽のとき空文字 "" を返します。それを print で確かめてみましょう。
use strict;
use warnings;
print 3 == 3, "\n"; # 1(真)
print 3 == 4, "\n"; # (空=偽で、何も出ない)
print "abc" eq "abc", "\n"; # 1
やってみよう
== を eq に変えたり、比べる値を変えたりして、数値比較と文字列比較の違いを確かめましょう。
演習
スカラ $word に "perl" を入れ、$word eq "perl" が真なら match! と表示してください(後置の if を使ってかまいません)。
ヒント1を見る
print "match!\n" if $word eq "perl";。