• Publicidad

Problema con while

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

Problema con while

Notapor later » 2007-10-06 13:24 @600

Tengo un problema con while, y es que no me deja usar las letras.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
print "Introduce un numero: ";
$n1=<STDIN>;
while ($n1 != 0) {
    print "Introduce un numero: ";
    $n1 = <STDIN>;
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Si introduzco una letra o palabra, ya me termina el bucle sin teclear el 0.
Además eso no es todo yo quiero que termine al teclear una palabra. Concretamente 'exit'.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
print "Introduce un numero: ";
$n1=<STDIN>;
while ($n1 != "exit") {
    print "Introduce un numero: ";
    $n1 = <STDIN>;
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¡Pero no funciona!.
later
Perlero nuevo
Perlero nuevo
 
Mensajes: 46
Registrado: 2007-10-06 12:42 @570

Publicidad

Notapor explorer » 2007-10-06 13:39 @611

El operador de comparación '!=' solo sirve para comparar números. Para comparar 'letras' (cadenas de caracteres) se debe usar 'ne' (not equal). Si no, al meter una letra o palabra, la comparación la pasa a numérico, y por defecto el valor de cualquier cadena que no parezca un número, es 0. Por eso sale del while.

Prueba con
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#! /usr/bin/perl -w

do {

    print "Introduce un número: ";

    $n = <>;

    chomp $n;

    print "$n\n";

} while ( $n ne 'exit' );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Es necesario el chomp para quitar el retorno de carro que el usuario nos ha pasado junto con el número o la palabra. Así, la comparación en el while es más fácil.
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


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 36 invitados

cron