next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Operadores de Comparación Sup: La Lógica de Perl Ant: La Lógica de Perl Err: Si hallas una errata ...


Operadores Lógicos

Perl tiene dos tipos de operadores lógicos: uno que tiene ``estilo C'' y el otro de ``estilo Pascal'':

  DB<1> $a = 4; $b = "hola"; $c = 0; $d = "";
  DB<2> p $a && $b
hola
  DB<3> p $a and $b
4
  DB<4> p ($a and $b)
hola
  DB<5> p $c
0
  DB<6> p !$c
1
  DB<7> p not $c
1
  DB<8> p not $d
1
  DB<9> p !$d
1
  DB<10> p $a || $b
4
  DB<11> p $a or $b
4
Toda la evaluación se hace en circuito corto. Así $a and $b es $a si $a es falso, si no da como resultado $b. Lo mismo es cierto para $a && $b.

Ejercicio 1.2.1   ¿Porqué p $a and $b produce como salida 4? ¿Es ese realmente el resultado de la evaluación de la expresión? Antes de contestar estudie este experimento:
  DB<1> $a = 4; $b = "hola";
  DB<2> $d = (print $a and $b)
4
  DB<3> p $d
hola
 DB<4> $e = print $a and $b
4
  DB<5> p $e
1
  DB<6> $d = (print $a && $b)
hola
¿Porqué $d contiene "hola" y sin embargo se imprime un 4 en la línea 2? ¿como interpreta Perl la expresión print $a and $b? ¿Como (print $a) and $b? o bien como ¿ print ($a and $b)? ¿Que tiene mas prioridad, el operador and o la llamada a print? ¿Ocurre lo mismo con el operador &&?


next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Operadores de Comparación Sup: La Lógica de Perl Ant: La Lógica de Perl Err: Si hallas una errata ...
Casiano Rodríguez León
2006-02-21