• Publicidad

sentencia if

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

sentencia if

Notapor dacons » 2006-04-10 11:31 @521

Hola, tengo una duda, cuando una función se ejecuta devuelve verdadero, pero ¿qué devolvería este código?
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if ($edad=0) {
  2.     print “ Verdadero o falso”;
  3. }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

¿y qué es lo que haría?
dacons
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2006-02-27 04:15 @219

Publicidad

Re: sentencia if

Notapor explorer » 2006-04-10 12:30 @563

No devuelve nada.

Lo que estás haciendo es guardar el valor 0 en la variable $edad.

Deberías haber escrito
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if ($edad == 0) {
  2.   print “ Verdadero o falso”;
  3. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Es un fallo muy común. Todos hemos caído en él.

Una forma poco ortodoxa para evitarlo es escribiéndolo al revés y daría un error de sintaxis:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. perl -le 'if(0=$edad){print"Verdadero"}'
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Can't modify constant item in scalar assignment at -e line 1, near "$edad)"
Execution of -e aborted due to compilation errors.
Última edición por explorer el 2006-04-10 14:00 @625, editado 2 veces en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor dacons » 2006-04-10 13:42 @612

Lo que tu me dices es lo que le he respondido yo a mi profesor pero me ha dicho que no es eso, he leído en algún sitio que Perl considera como verdadero todo valor no nulo.

¿En este caso, sería nulo al asignarle el valor en la condición?
dacons
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2006-02-27 04:15 @219

Re: sentencia if

Notapor explorer » 2006-04-10 13:54 @620

Naturalmente, se pueden poner asignaciones dentro de una condición if.

Perl ejecuta la expresión y luego la evalúa. Si es 0 o nula, no es verdadera y continúa con lo que hay después de la sentencia if.
Si a una variable le asignamos el valor 0, el resultado de la expresión es el resultado de la última expresión, luego también es 0. Si if se encuentra con un 0, luego la condición es falsa y no se ejecuta.

Entra en qué es verdadero o falso en Perl y busca por Truth and Falsehood.

Quizás no me expliqué bien en mi anterior mensaje... en el código corregido
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if ($edad == 0) {
  2.   print “ Verdadero o falso”;
  3. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
si $edad es 0, entonces sacará la frase. Pero en
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if ($edad = 0) {
  2.   print “ Verdadero o falso”;
  3. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
da igual el valor que tenga $edad, nunca sacará nada.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: sentencia if

Notapor explorer » 2006-04-10 14:04 @627

dacons escribiste:Hola, tengo una duda, cuando una función se ejecuta devuelve verdadero
No todas las funciones devuelven verdadero...
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. perl -le 'sub zero{0};if(zero==0){print"Falso!"}'
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
:D
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor dacons » 2006-04-21 11:59 @541

Eso era, muchas gracias.
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: No hay usuarios registrados visitando el Foro y 0 invitados