Perl Language
Verdadero y falso
Buscar..
Sintaxis
- undef # falso
- '' # Definido, falso
- 0 # Definido, Tiene Longitud, Falso
- '0' # definido, tiene longitud, falso
Observaciones
Perl no tiene un tipo de datos booleano, ni tiene ninguna false
clave true
o false
como muchos otros idiomas. Sin embargo, cada valor escalar se evaluará como verdadero o falso cuando se evalúe en un contexto booleano (la condición en una instrucción if o un bucle while, por ejemplo).
Los siguientes valores se consideran falsos:
-
''
, la cadena vacía. Esto es lo que devuelven los operadores de comparación incorporados (por ejemplo,0 == 1
) -
0
, el número 0, incluso si lo escribes como 000 o 0.0 -
'0'
, la cadena que contiene un solo 0 dígitos -
undef
, el valor indefinido - Objetos que utilizan la sobrecarga para numerar / encadenar en valores falsos, como
JSON::false
Todos los demás valores son verdaderos:
- cualquier número distinto de cero, como
1
,3.14
,'NaN'
o'Inf'
- cualquier cadena que sea numéricamente 0 pero no literalmente la cadena
'0'
, como'00'
,'0e0'
,"0\n"
y"abc"
.
Si intencionalmente está devolviendo un valor numérico verdadero 0, prefiera'0E0'
(usado por módulos conocidos) o'0 but true'
(usado por las funciones de Perl) - cualquier otra cadena que no esté vacía, como
' '
,'false'
- todas las referencias, incluso si hacen referencia a valores falsos, como
\''
,[]
o{}
- Una matriz o hash de valores falsos.
Los siguientes operadores se tratan normalmente para devolver un valor booleano en contexto escalar:
@a
devuelve si la matriz está vacía o no%h
devuelve si el hash está vacío o nogrep
devuelve si se encontraron elementos coincidentes o no@a = LIST
y(LIST) = LIST
devuelve si la LISTA del lado derecho produjo o no escalas
Lista de valores verdaderos y falsos
use feature qw( say );
# Numbers are true if they're not equal to 0.
say 0 ? 'true' : 'false'; # false
say 1 ? 'true' : 'false'; # true
say 2 ? 'true' : 'false'; # true
say -1 ? 'true' : 'false'; # true
say 1-1 ? 'true' : 'false'; # false
say 0e7 ? 'true' : 'false'; # false
say -0.00 ? 'true' : 'false'; # false
# Strings are true if they're not empty.
say 'a' ? 'true' : 'false'; # true
say 'false' ? 'true' : 'false'; # true
say '' ? 'true' : 'false'; # false
# Even if a string would be treated as 0 in numeric context, it's true if nonempty.
# The only exception is the string "0", which is false.
# To force numeric context add 0 to the string
say '0' ? 'true' : 'false'; # false
say '0.0' ? 'true' : 'false'; # true
say '0e0' ? 'true' : 'false'; # true
say '0 but true' ? 'true' : 'false'; # true
say '0 whargarbl' ? 'true' : 'false'; # true
say 0+'0 argarbl' ? 'true' : 'false'; # false
# Things that become numbers in scalar context are treated as numbers.
my @c = ();
my @d = (0);
say @c ? 'true' : 'false'; # false
say @d ? 'true' : 'false'; # true
# Anything undefined is false.
say undef ? 'true' : 'false'; # false
# References are always true, even if they point at something false
my @c = ();
my $d = 0;
say \@c ? 'true' : 'false'; # true
say \$d ? 'true' : 'false'; # true
say \0 ? 'true' : 'false'; # true
say \'' ? 'true' : 'false'; # true
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow