• Publicidad

Limpiar pantalla en un bucle

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

Limpiar pantalla en un bucle

Notapor J.C.M.Castillo » 2006-01-13 10:44 @489

Hola.

Soy muy, pero que muy novato en esto del Perl.

Estoy probando los bucles y cuando inserto un print dentro de ellos, el mensaje aparece en diferentes líneas, de forma continuada.

Mi pregunta es: ¿Existe alguna función que permita borrar la pantalla y para que así solo muestre una sola línea cada vez que ejecuta el print?

En otros lenguajes de programación sí que existe, pero no he visto aún cómo se puede hacer en Perl.

Un saludo y gracias de antemano.
J.C.M.Castillo
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2006-01-13 10:40 @486

Publicidad

Notapor macgregor » 2006-01-13 11:06 @504

Lo cierto es que no estoy seguro de haber entendido lo que pides.

Si haces un bucle que se ejecutara 10 veces con un print dentro te saldrán 10 líneas si haces print "mensaje\n";. Si no pones el salto de línea te saldrán "pegados" los mensajes.

Si estás en UNIX pon retorno de carro y salto de línea: "\r\n"

¿¿Te refieres a eso cuando dices "de forma continuada"??

Si quieres limpiar la pantalla siempre puedes hacer una llamada al sistema operativo y ejecutar la instrucción que quieras.

La siguiente línea la utilizo para ejecutar un programa Perl desde un cgi (también escrito en Perl).
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
system("perl $inidir"."/txt2html.pl $tmpdir/QCspot.txt $tmpdir/QCspot.html");
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4

$tmpdir/QCspot.txt y $tmpdir/QCspot.html son parámetros de entrada para el programa txt2html.pl

Espero que te sirva de algo.

Un saludo.
MACGREGOR [TM]
Avatar de Usuario
macgregor
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2004-12-09 07:32 @355
Ubicación: españa

Re: Limpiar pantalla en un bucle

Notapor explorer » 2006-01-13 11:34 @523

Para borrar la pantalla, una forma de hacerlo, si estás en Linux, es ejecutar el comando "clear" antes de los print:
system("clear");.

Pero si quieres hacerlo sin llamar a un comando externo, también puedes enviar los comandos adecuados para borrar la pantalla, usando el módulo Term::Screen:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Term::Screen;
  2. my $pantalla = Term::Screen->new();
  3. unless ($pantalla) { die " Error al inicializar acceso a pantalla\n"; }
  4. $pantalla->clrscr();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Claro que antes tienes que tener instalado ese módulo... la ventaja viene luego porque puedes hacer más cosas, como posicionar el cursor donde quieras, para empezar a escribir.
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

Notapor J.C.M.Castillo » 2006-01-13 11:59 @541

Efectivamente. Esto último es lo que necesitaba. Eso sí, como utilizo Windows, he tenido que sustituir system ("clear") por system ("cls").

Y ya puestos... ¿Se puede hacer esto mismo para un CGI que se ejecuta en un navegador? Lo he probado, pero se llena la pantalla con líneas del mensaje que envío con print.


Muchísimas gracias.
J.C.M.Castillo
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2006-01-13 10:40 @486

Re: Limpiar pantalla en un bucle

Notapor explorer » 2006-01-13 12:57 @581

Un CGi es distinto... por definición, la salida estándar de un CGI se redirije al cliente web que ha hecho la petición.

Sí podrías sacar información a través del STDERR o, mejor, el syslog (bueno, eso en el caso de UNIX).

Si lo que quieres es que quede constancia de todo lo que ocurre, como una especie de Debug de todo el proceso, te recomiendo el uso del módulo Log::Log4perl. Puede parecer muy complicado al principio, pero es el que tiene la mejor gestión de logs de actividad que haya visto nunca. Desconozco si existe la versión para Windows.

Puedes hacer la siguiente prueba: cambia los "print" por "warn". En la consola donde se esté ejecutando el servidor o en los ficheros de registro de acceso del servidor web verás los mensajes.

Actualización: léete este comentario, que te da más pistas.
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 12 invitados