2011-01-19 17 views

答えて

7

いいえ、それらは異なっています。空の文字列と$hostを比較し、もう1つは$hostがすべて定義されているかどうかをチェックしています(任意の値を持つ可能性があります)。

+0

定義された部分を試してみるとうまくいかず、私が間違っていたと思っていたので、同じではありますが、私は見ています。説明をありがとう。 – ianc1215

4

$host"localhost"ある場合、それらは異なるでしょう。

+1

ホストはスクリプト内の変数を参照するだけではありません。 – ianc1215

+0

@Solignis:はい、変数 '$ host'の値が「localhost」の場合は定義されますが、「」と等しくないので、2つのステートメントは異なる結果を生成します。 –

3

あなたが最初に変更された場合でも:あなたが有効に警告して走り、未定義$hostを残したかどうかを確認したいと

if ($host ne '') ... 

二つの文は、等価ではありません。

$ perl -we 'my $host; print $host ne "" ? "Hi\n" : "Lo\n";' 
Use of uninitialized value $host in string ne at -e line 1. 
Lo 
$ perl -we 'my $host; print defined $host ? "Hi\n" : "Lo\n";' 
Lo 
$ perl -we 'my $host = ""; print defined $host ? "Hi\n" : "Lo\n";' 
Hi 
$ perl -we 'my $host = ""; print $host ne "" ? "Hi\n" : "Lo\n";' 
Lo 
$ 

回答の1つが「ハイ」であることに注意してください。空文字列は細かい値です。 undefと同じではありません。

+0

私のコードをできるだけきれいにしようとしているので、私は思っていました。 – ianc1215

関連する問題