Valores booleanos en Perl

undef true false boolean

Perl no tiene ningún tipo especial para los valores booleanos, sin embargo en la documentación de Perl puedes ver muchas veces que una función devuelve un valor "Booleano". Otras veces la documentación dice que una función devuelve verdadero o falso.

¿Que es verdadero?

Perl no tiene un tipo booleano, sin embargo cualquier valor escalar será verdadero o falso cuando se usa if. Puedes escribir

if ($x eq "foo") {
}

y también

if ($x) {
}

el primer ejemplo comprobará si el contenido de la variable $x es igual a la cadena "foo" mientras que el segundo comprobará si $x es verdadero o falso.

¿Que valores son verdadero? ¿Cuales falso?

Es bastante sencillo. Según la documentación:

El número 0, las cadenas '0' y '', la lista vacía "()", y "undef"
son todos falsos en un contexto booleano. Todos los demás valores
son verdaderos.
La negación de un valor verdadero usando "!" o "not" devuelve un valor
falso especial. Cuando es evaluado como una cadena es tratado como '', como
número es tratado como 0.

Extraído de "Truth and Falsehood" dentro de perlsyn.

Por lo tanto los siguientes valores escalares son considerados falsos:

  • undef - el valor indefinido
  • 0 el número 0, independientemente de si lo escribes como 000 o 0.0
  • '' la cadena vacía.
  • '0' la cadena que contiene un solo 0.

El resto de valores escalares son verdaderos, incluyendo los siguientes:

  • 1 cualquier número que no sea 0
  • ' ' la cadena con un espacio en ella
  • '00' dos o más ceros en una cadena
  • "0\n" un cero seguido de una nueva línea
  • 'true'
  • 'false' si, incluso la cadena 'false' se evalúa como verdadero.

Creo que esto es porque Larry Wall, el creador de Perl, tiene una visión positiva del mundo. Probablemente piensa que hay pocas cosas malas y falsas en el mundo. La mayoría de las cosas son ciertas.

Otras páginas

undef, el valor por defecto y la función defined en Perl
undef, el valor por defecto y la función defined en Perl
Perl tutorial
El operador ternario en Perl
Contexto escalar y lista en Perl, el tamaño de un array
Contexto escalar y lista en Perl, el tamaño de un array
@ARGV en Perl
@ARGV en Perl
@ARGV en Perl

Author

Gabor Szabo (szabgab) Gabor Szabo