• Publicidad

Ayuda con la construción de un menú

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

Ayuda con la construción de un menú

Notapor Mono_Ezpacial » 2012-09-23 20:36 @900

Saludos, soy nuevo en este foro. Estoy trabajando en un "menú" pero tengo un pequeño problema: mi idea es que cuando escriban "-animals" el programa muestre una lista de animales, pero que solo funcione con "-animals", pero lo que pasa es que escribo cualquier otra cosa y muestra la lista.

Chequen mi código. ¿Cómo puedo corregir este error? Mi idea es que al escribir "-animals" muestre la lista pero si escribe cualquier otra cosa que no sea "-animals" imprima en pantalla "Command not found". Les agradezco si me pueden ayudar...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. #Menú de animales
  3. print q(
  4.  __  __ _____ _   _ _   _
  5. |  \/  | ____| \ | | | | |
  6. | |\/| |  _| |  \| | | | |
  7. | |  | | |___| |\  | |_| |
  8. |_|  |_|_____|_| \_|\___/                  
  9. );
  10. print "Press ENTER\n";
  11. $var=<STDIN>;
  12. print ">\n";
  13. $usr = <>;
  14. if ($usr = $pc) {
  15. print "
  16.    _          _                 _    
  17.   / \  _ __ (_)_ __ ___   __ _| |___
  18.  / _ \ | '_ \| | '_ ` _ \ / _` | / __|
  19. / ___ \| | | | | | | | | | (_| | \__ \
  20. /_/   \_\_| |_|_|_| |_| |_|\__,_|_|___/
  21. -Ballena azul
  22. -Tigre
  23. -Elefante
  24. -Mono                                      
  25. "
  26. } else {
  27. print "Command not found\n";
  28. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Wake up, Neo... The Matrix has you... Follow the white rabbit. Knock, Knock, Neo.
Mono_Ezpacial
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-09-23 18:09 @798

Publicidad

Re: Ayuda con la construción de un menú

Notapor explorer » 2012-09-23 20:55 @913

Bienvenido a los foros de Perl en Español, Mono_Ezpacial.

Hay varios problemas en tu código...
  • En la línea 13 estás leyendo desde el teclado. Recuerda que lo que leas desde el teclado será el texto que introduzca el usuario, incluido el/los carácter(es) de fin de línea (por acción de la tecla Entrar). Si esos caracteres no te interesan, es mejor que los quites con un chomp($usr);
  • En la línea 14 has pretendido hacer una comparación, pero en realidad estás usando el operador de asignación, así que $usr acaba teniendo el valor de $pc. Lo más seguro es que quisieras hacer una comparación de igualdad alfanumérica, así que el operador que debes usar es eq
  • No sabemos qué valor tiene $pc, en la misma línea. No ha sido declarada ni definida en ninguna parte. Así que, por defecto, su valor es undef
A ver si con estas pistas terminas el programa...
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: Ayuda con la construción de un menú

Notapor Mono_Ezpacial » 2012-09-24 20:01 @876

¡síííí, gracias! ¡Ya lo pude terminar! Gracias, ¡Saludos! :D :D :D
Wake up, Neo... The Matrix has you... Follow the white rabbit. Knock, Knock, Neo.
Mono_Ezpacial
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-09-23 18:09 @798

Re: Ayuda con la construción de un menú

Notapor Mono_Ezpacial » 2012-09-26 21:03 @918

Hola de nuevo, muchas gracias, ya lo pude terminar pero me surgió otra pregunta: ¿cómo puedo hacer que se devuelva al menú anterior si lo que escribió no es válido o simplemente al terminar de dar los datos se pase algo parecido a esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
    _    _   _ ___ __  __    _    _     ____  
   / \  | \ | |_ _|  \/  |  / \  | |   / ___|
  / _ \ |  \| || || |\/| | / _ \ | |   \___ \
 / ___ \| |\  || || |  | |/ ___ \| |___ ___) |
/_/   \_\_| \_|___|_|  |_/_/   \_\_____|____/
                                             

>asdas

[#]Not found
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

(me vuelve a llevar al inicio del programa...)

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
    _    _   _ ___ __  __    _    _     ____  
   / \  | \ | |_ _|  \/  |  / \  | |   / ___|
  / _ \ |  \| || || |\/| | / _ \ | |   \___ \
 / ___ \| |\  || || |  | |/ ___ \| |___ ___) |
/_/   \_\_| \_|___|_|  |_/_/   \_\_____|____/
                                             

>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


No sé si me hago entender, la parte de "Not found" ya lo solucioné pero la parte que me devuelve al inicio del programa no. Una vez abierto y ejecutado el programa finaliza pero automáticamente. Como ven mi idea es que finalice con un "exit" o de lo contrario me regrese al inicio del programa o a la última acción. Gracias de antemano.

PD: no sé si exista algún problema al poner más preguntas en una ya resuelta, espero que no, gracias.
Wake up, Neo... The Matrix has you... Follow the white rabbit. Knock, Knock, Neo.
Mono_Ezpacial
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-09-23 18:09 @798

Re: Ayuda con la construción de un menú

Notapor explorer » 2012-09-26 21:58 @957

La solución es meter todas las líneas que deben formar parte del menú y de la respuesta al usuario, dentro de un bucle (do{}while(), do{}until(), while(){}, until(){}), que debe encargarse de repetir una y otra vez las mismas líneas hasta que se cumpla la condición de salida del bucle (el usuario eligió salir del programa).

Más información en tu propio ordenador en perldoc perlsyn, y en la Web (traducido).

Ejemplo
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: Ayuda con la construción de un menú

Notapor Mono_Ezpacial » 2012-09-29 13:44 @613

wow, gracias de nuevo por responder a mis preguntas pero soy nuevo en Perl. Busqué sobre lo que me dijiste y no encontré cómo hacerlo. ¿Me podrías dar una explicación? Mira cómo va el código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. print q(
  3.  
  4.  __  __ _____ _   _ _   _
  5. |  \/  | ____| \ | | | | |
  6. | |\/| |  _| |  \| | | | |
  7. | |  | | |___| |\  | |_| |
  8. |_|  |_|_____|_| \_|\___/
  9.                          
  10.  
  11. );
  12. print "\n";
  13. print "Menu > ";
  14. $animals = "-animals";
  15. $help = "help";
  16. chomp($usr = <>);
  17. if ($usr eq $animals) {
  18.         system("clear");
  19. print q{
  20.          
  21.        
  22.     _    _   _ ___ __  __    _    _     ____  
  23.    / \  | \ | |_ _|  \/  |  / \  | |   / ___|
  24.   / _ \ |  \| || || |\/| | / _ \ | |   \___ \
  25.  / ___ \| |\  || || |  | |/ ___ \| |___ ___) |
  26. /_/   \_\_| \_|___|_|  |_/_/   \_\_____|____/
  27.  
  28. -Mono
  29. -Pato
  30. -Perro
  31. -Gato                                              
  32.  
  33.         }
  34. }
  35. if ($usr eq $help) {
  36. system("clear");
  37.    print "
  38. _   _ _____ _     ____  
  39. | | | | ____| |   |  _ \
  40. | |_| |  _| | |   | |_) |
  41. |  _  | |___| |___|  __/
  42. |_| |_|_____|_____|_|    
  43.  
  44. -animales       Ver lista de animaes
  45. -exit           Salir del programa(disabled)
  46. ";
  47. }
  48. else {
  49.         print " Unknown command =$usr\n";
  50.         }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Gracias :D
Wake up, Neo... The Matrix has you... Follow the white rabbit. Knock, Knock, Neo.
Mono_Ezpacial
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-09-23 18:09 @798

Re: Ayuda con la construción de un menú

Notapor explorer » 2012-09-29 17:37 @776

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $hay_que_salir = 0;
  2.  
  3. do {
  4.     # presentar el menú
  5.     # leer la respuesta del usuario
  6.     # realizar la acción del usuario
  7.     # si la acción es Salir, se pone $hay que salir = 1
  8.     ...;
  9. } until $hay_que_salir;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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: Ayuda con la construción de un menú

Notapor Mono_Ezpacial » 2012-10-04 21:05 @920

Gracias, tu respuesta me fue de mucha ayuda :) :)
Wake up, Neo... The Matrix has you... Follow the white rabbit. Knock, Knock, Neo.
Mono_Ezpacial
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-09-23 18:09 @798


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 22 invitados

cron