• Publicidad

Barra de progreso

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

Barra de progreso

Notapor elistraus » 2013-03-08 12:15 @552

Tengo una consulta.

Quiero lograr hacer que mientras estoy esperando la ejecución de un programa Perl, en la línea de comando me muestre algo como el progreso, algo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
En ejecucion.........................[====>                                  ] 10%
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


De momento lo estoy haciendo de la manera troglodita :D Así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. system('clear');
  2. print "En ejecución           [=>                    ] 0%\n";
  3.         $telnet->waitfor('/> /');
  4. system('clear');
  5. print "En ejecución           [==>                   ] 5%\n";
  6.         $telnet->print($con_tdm{"choice"});
  7. system('clear');
  8. print "En ejecución           [===>                  ] 10%\n";
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Quiero saber si hay algún modulo que pueda hacer eso, ya que el problema es que me genera limpieza en el prompt y si quiero ir arriba me muestra lo limpiado con anterioridad, o sea, así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
En Ejecución.................[=>                ] 0%
















En Ejecución.................[========>                 ] 10%
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Es lujo, nada más, pero quiero saber cómo hacerlo, para aprender...

Saludos
elistraus
Perlero nuevo
Perlero nuevo
 
Mensajes: 37
Registrado: 2011-10-31 23:37 @026

Publicidad

Re: Barra de progreso

Notapor explorer » 2013-03-08 16:59 @749

Una forma de presentar la barra de progreso en la misma línea, es la de no utilizar un carácter de avance de línea (porque entonces avanza a la siguiente línea), sino un carácter de retorno de carro (para que el cursor se coloque al principio de línea).

Entonces, la secuencia sería:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. system('clear');
  2.  
  3. print "\rEn ejecución           [=>                    ] 0% ";
  4. $telnet->waitfor('/> /');
  5.  
  6. print "\rEn ejecución           [==>                   ] 5% ";
  7. $telnet->print($con_tdm{"choice"});
  8.  
  9. print "\rEn ejecución           [===>                  ] 10% ";
  10. # ...
  11. print "\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Hay módulos, en Perl, para presentar barras de progreso, sobre todo en bucles for(), como por ejemplo el fantástico Smart::Comments.
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


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron