2011-08-04 23 views

答えて

5

警告を使用し、特に 1を上ライナー。

Perlには、trueまたはfalseの名前付き定数はありません。警告または厳密に有効化されていないと、定数または関数ではあるが、そうでないものは静かに文字列として解釈されます。したがって、if("true")if("false")を実行しており、""または"0"以外のすべての文字列はtrueです。

10

あなたは厳しいとそれを実行すると:常に真である文字列"true"または"false"として解釈され

Bareword "true" not allowed while "strict subs" in use at -e line 1. 

perl -Mstrict -e 'if(true) { print 1 }' 

あなたは理由になるだろう。定数はPerlで定義されていないが、あなたはそれを自分で行うことができます。

use constant { true => 1, false => 0 }; 
if(false) { print 1 } 
8

あなたは裸の単語truefalseを使用しています。裸の言葉は悪いことです。あなたはこれをしようとした場合:

Bareword "true" not allowed while "strict subs" in use at - line 3. 
Execution of - aborted due to compilation errors. 

どれ定義された値が0のように見えない「真」とみなされます。

use strict; 
use warnings; 
if (true){print 1} 

あなたは、おそらくこのような何かを得るでしょう。未定義の値または0(たとえば0または"0"など)のような値は、すべて「false」と見なされます。これらの値には組み込みのキーワードはありません。あなただけの01を使用する(または、それは本当にあなたを悩ます場合use constant { true => 1, false => 0};に固執することができます。:)

+0

を見て、私は4GLを移植していますコードをPerl 5に変換し、定数を持たせると助けになります。私はそれらについて忘れていた。ありがとう。 – octopusgrabbus

関連する問題