• Publicidad

Operador and

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Operador and

Notapor dacons » 2006-04-24 05:52 @286

Hola a todos, mi duda es ¿qué otra función hace el operador and? Sé lo que hace en una condición, pero por ejemplo en este código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $a = 'manzanas';
  2. $b = 'peras';
  3. print $a and $b;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

¿Por qué imprime manzanas? ¿Qué es lo que hace?
dacons
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2006-02-27 04:15 @219

Publicidad

Notapor explorer » 2006-04-24 06:27 @310

Es muy curioso lo que pasa.

Resulta que los operadores lógicos devuelven el último valor o expresión evaluada que confirme toda la expresión lógica.

En caso de un 'and', todas las expresiones deben ser ciertas para devolver un valor de cierto, y en ese caso, devuelve el último valor de la última expresión evaluada (la que está más a la derecha).

En el caso planteado, deberían ser las 'peras' las que deberían de aparecer en pantalla, pero lo que salen son las 'manzanas'.

¿Dónde está el fallo?

Pues resulta que print $a and $b; es lo mismo que si hubieras escrito (print $a) and $b; Es decir, imprimes 'manzanas' porque es la primera expresión a evaluar; como es una expresión cierta (imprimimos un valor), luego evalúa 'peras'. Pero el resultado del and se pierde.

Cosa distinta es escribir entonces print ($a and $b); que, por fin y de esta manera, salen nuestras queridas 'peras'...

Y cosa distinta sería si quisiéramos imprimir $a sólo en el caso de que $b fuera cierta: print $a if $b;
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor dacons » 2006-04-24 07:07 @338

Muchas gracias de nuevo
dacons
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2006-02-27 04:15 @219


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 1 invitado

cron