• Publicidad

Menú por consola

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Menú por consola

Notapor scout » 2009-11-04 19:03 @835

Gente: estoy unificando unos procedimientos que tengo en unos bat y me gusta por consola (bien retro); la lógica funciona bien, está todo probado por separado.

Deje el menú para el final; me gustaría saber cómo podría armarlo en Perl teniendo que seleccionar entre 10 posibilidades, o sea, del 1 al 10; me quedo trabado en el control para el caso de que pulsen cualquier otra opción o espere cierto tiempo sin pulsar.

Agradeceré una mano.

Scout
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Publicidad

Re: Menú por consola

Notapor explorer » 2009-11-04 19:29 @853

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

Una forma cómoda de hacerlo es por medio del uso de algún módulo que realice esa tarea.

Term::Menu hace eso: muestra un menú y se encarga de obtener información del usuario.

Lo que también puedes hacer es mostrar parte de tu código para que veamos por dónde quieres ir.
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Menú por consola

Notapor scout » 2009-11-04 19:53 @870

Cada opción del menú ejecutará un sqlcmd o ejecutará system para X mantenimientos de un servidor, por ello que quería ponerlo en un menú como para darle orden a esas tareas y buscaba un ejemplo.

Buscaré por vuestras indicaciones y cuando tengo algo lo cuelgo...

Muchas gracias... veré cómo va ese menú.
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Re: Menú por consola

Notapor scout » 2009-11-05 05:01 @250

Perfecto, va quedando... lo único es que aparece el texto inicial como...

"Please choose one of the following options."

¿Hay alguna forma de sacarlo o personalizarlo...? Vi lo de aftertext pero no me funciona...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  use Term::Menu;
  my $prompt = new Term::Menu;
  my $answer = $prompt->menu(

       resguardo =>      ["resguardo", '1'],
        sqlaltas =>      ["sqlaltas", '2'],
        sqlcronograma    =>      ["sqlcronogramas", '3'],
        Ayuda  =>      ["Ayuda sobre el  Programa", '4'],
        Salir  =>      ["Salir del Programa", '5'],
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Re: Menú por consola

Notapor explorer » 2009-11-05 05:09 @256

Creo que es beforetext (definir el texto que sale antes de las opciones).
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Menú por consola

Notapor scout » 2009-11-05 05:12 @258

Sí, eso lo vi, pero donde se define.. vi que por ejemplo el spaces lo definen así, pero no sé cómo hacerlo cuando hay que agregar una cadena de caracteres...

spaces => 5,

Perdón en esto del Perl, soy nuevito...
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Re: Menú por consola

Notapor explorer » 2009-11-05 05:26 @268

Dentro del new(), como otra opción más:

beforetext => 'Por favor, elija una de las siguientes opciones:',
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

Re: Menú por consola

Notapor scout » 2009-11-05 10:44 @489

Lo probé de esta manera pero sale un error...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use Term::Menu;
  my $prompt = new Term::Menu;
  my $answer = $prompt->menu(
       aftertext  => 'Por favor, elija una de las siguientes opciones:',
       resguardo =>      ["resguardo", '1'],
        sqlaltas =>      ["sqlaltas", '2'],
        sqlcronograma    =>      ["sqlcronogramas", '3'],
        Ayuda  =>      ["Ayuda sobre el  Programa", '4'],
        Salir  =>      ["Salir del Programa", '5'],
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Salida por consola:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
C:\Perl\bin>perl c:\perl\informesv4.pl
Can't use string ("Por favor, elija una de las sigu") as an ARRAY ref while "str
ict refs" in use at C:/Perl/site/lib/Term/Menu.pm line 57.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Re: Menú por consola

Notapor explorer » 2009-11-05 11:51 @535

No, te he dicho que hay que ponerlo en el new():

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5.  
  6. use Term::Menu;
  7.  
  8. my $prompt = Term::Menu->new(
  9.     beforetext      => 'Por favor, elija una de las siguientes opciones:',
  10.     aftertext       => 'Pulse un número: '
  11. );
  12. my $answer = $prompt->menu(
  13.     resguardo       => [ 'resguardo',               1 ],
  14.     sqlaltas        => [ 'sqlaltas',                2 ],
  15.     sqlcronograma   => [ 'sqlcronogramas',          3 ],
  16.     Ayuda           => [ 'Ayuda sobre el Programa', 4 ],
  17.     Salir           => [ 'Salir del Programa',      5 ],
  18. );
  19.  
  20. __END__
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: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Menú por consola

Notapor scout » 2009-11-06 03:11 @174

¡Síííí...! Bien, muchas gracias; bueno, estuve jugando con las demás opciones del menú y responde bien... ahora estoy viendo de utilizar la selección con fines de asignar variables para comenzar con los procesos y vamos bien salvo el problema surge cuando

1.- si seleccionamos 1 la variable $variablesql se pone en 643
2.- si seleccionamos 2 la variable $variablesql se pone en 643 nuevamente...

Lo mismo pasa si pongo un print() en cada if()... se mantiene el del estado anterior.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ($answer eq "sqlaltas",'1')   {
    print "As elegido sqlaltas: ";
    $variablesql = 643;
}

if ($answer eq "sqlcronograma",'2') {
    print "As elegido sede sqlcronograma: ";
    $variablesql = 544;
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Siguiente

Volver a Intermedio

¿Quién está conectado?

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

cron