Gibt es in Perl einen booleschen Wahr / Falsch-Wert? [Duplikat]

8
%Vor%

Ich bin erstaunt, dass sowohl true als auch false die if ...

übergibt     
asker 04.08.2011, 04:30
quelle

3 Antworten

10

Wenn Sie es mit strict ausführen:

%Vor%

Sie würden den Grund bekommen:

%Vor%

Es wird als String "true" oder "false" interpretiert, was immer wahr ist. Die Konstanten sind nicht in Perl definiert, aber Sie können es selbst tun:

%Vor%     
bvr 04.08.2011 04:36
quelle
8

Sie verwenden die barewords true und false . Bloße Worte sind eine schlechte Sache. Wenn Sie das versuchen:

%Vor%

Sie werden wahrscheinlich so etwas bekommen:

%Vor%

Jeder definierte Wert, der nicht wie 0 aussieht, wird als "wahr" betrachtet. Jeder undefinierte Wert oder jeder Wert, der wie 0 aussieht (z. B. 0 oder "0" ) wird als "falsch" betrachtet. Für diese Werte gibt es kein integriertes Schlüsselwort. Sie können einfach 0 und 1 verwenden (oder in use constant { true => 1, false => 0}; bleiben, wenn es Sie wirklich stört.:)

    
Ted Hopp 04.08.2011 04:38
quelle
5

Verwenden Sie immer Warnungen, vor allem auf Einzeilern.

Perl hat keine wahr oder falsch benannten Konstanten, und ohne Warnungen oder strict enabled wird ein "bareword" (etwas, das eine Konstante oder Funktion sein könnte, aber nicht ist) stillschweigend als String interpretiert. Sie tun also if("true") und if("false") und alle Zeichenfolgen außer "" oder "0" sind wahr.

    
ysth 04.08.2011 04:34
quelle

Tags und Links