2016-11-22 12 views
4

で文字列を比較する、1等「EQ」または「NE」との2つの文字列を比較する必要がありperlはperlで「==」

私は少しは次のコードスニペットは、「はい」と表示します驚いています。

$str = "aJohn"; 
$x = substr($str, 1); 
if ($x == "John") { 
    print "yes\n"; 
} 

私のperlはUbuntu上でバージョンv5.18.4を持っています。

2つの文字列の "=="が "eq"と異なる結果を生成するケースはありますか?おかげさまで

+0

'$ str eq" John ";' ... '$ str ==" John ";' – stevieb

+2

常に 'use strict;警告qw(すべて)を使用する; '! – ikegami

答えて

12

"foo" == "bar"です。 "foo" eq "bar"はfalseです。

理由:==数値です。 "foo"および"bar"は両方とも数値的に0と評価されます("17foo"は数値で17と評価されます)。 0 == 0以降、"foo" == "bar"です。これは通常あなたが探している操作ではありません。

+7

警告を有効にする必要がある場合は、数値コンテキストで '' foo ''や' '17foo''を使うと警告が出ることに注意してください。 – ysth