[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: atascado con un script menu



El mar, 05-08-2008 a las 19:24 +0200, sercuto@alumni.uv.es escribió:
> Hola a todos.
> 
> Quiero hacer un script que presente un menu en la consola (elije 1, 2,
> 3), y añadirle la funcionalidad de un timeout, el cual trancurridos
> unos segudos elija una opción por defecto.
> 
> Lo estoy intentando en Perl (pero si se puede hacer en bash o incluso
> C me viene bien, la idea es que se pueda ejecutar en debian), pero me
> estoy liando.
> 
> El menú lo tengo claro, un stdin y unos cuantos if, el problema es que
> no sé como implementar el timeout.
> 
> Buscando por el google, he leido que para realizar menus interactivos
> no se utiliza el stdin ya que no permite automatizar el proceso de
> entrada de datos.
> 
> Mirando en cpan he encontrado cosas como expect, send, spawn y en C he
> visto que la librerias tipo conio y iostream me pueden venir bien.
> 
> El caso es que cada vez me estoy perdiendo más y por eso os pido ayuda.
> 
> Ni que decir tiene que todo esto es porque estoy muy justito en
> programación.
> 
> ¿Por donde he de enfocar la cosa?
> 

En perl es muy simple
utiliza el SIGNAL alarm()
hay muchos ejemplos en la web, si no encontras despues te puedo pasar
alguno
Y por favor NO hagas crossposting (estas mandando lo mismo a la lista de
ubuntu)

> De momento solo he llegado a esto:
> 
> #!/usr/bin/perl
> use Term::ANSIColor;
> 
> imprime_menu();
> 
> close(STDIN);
> print STDOUT "Por favor elije una opción:\n";
> $input = <STDIN>;
> print STDOUT "The number is $input\n";
> chop($input);  
> 
> if ($input =='') {
> 	sleep 5;
> 	print 'vacio!';
> 	print "Han pasado 5 valiosos segundos!!\n";
> 	$input = "5\r";
> 	print $input;
> 	close(STDIN);
> } 
> if ($input == '1') {
> 	print 'opcion1!';
> }
> if ($input eq '2') {
>         print "\nopcion2\n";
> } 
> 
> Gracias
> 
> 
> 


Reply to: