これらの2つのステートメントは同じことを意味しますか?これらの2つのステートメントは同じですか?
if ($host eq '') {
print "Host exists\n";
}
そして
if (defined $host) {
print "Host exists\n";
}
これらの2つのステートメントは同じことを意味しますか?これらの2つのステートメントは同じですか?
if ($host eq '') {
print "Host exists\n";
}
そして
if (defined $host) {
print "Host exists\n";
}
いいえ、それらは異なっています。空の文字列と$host
を比較し、もう1つは$host
がすべて定義されているかどうかをチェックしています(任意の値を持つ可能性があります)。
定義された部分を試してみるとうまくいかず、私が間違っていたと思っていたので、同じではありますが、私は見ています。説明をありがとう。 – ianc1215
号
$host
が"localhost"
ある場合、それらは異なるでしょう。
ホストはスクリプト内の変数を参照するだけではありません。 – ianc1215
@Solignis:はい、変数 '$ host'の値が「localhost」の場合は定義されますが、「」と等しくないので、2つのステートメントは異なる結果を生成します。 –
あなたが最初に変更された場合でも:あなたが有効に警告して走り、未定義$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
と同じではありません。
私のコードをできるだけきれいにしようとしているので、私は思っていました。 – ianc1215
どのような質問ですか? – SLaks