• Publicidad

Borrar carácter de la consola de salida

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

Borrar carácter de la consola de salida

Notapor desdechina » 2013-07-02 10:10 @465

Hola;

¿Hay alguna forma de borrar el último carácter de la consola de salida cuando se está ejecutando el script?

Por ejemplo, si tenemos constantemente un script corriendo, ¿podemos escribir la hora en la consola de salida y cada x minutos que escriba la nueva hora pero borrando la anterior?

Gracias.
desdechina
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2013-01-11 08:21 @389

Publicidad

Re: Borrar carácter de la consola de salida

Notapor explorer » 2013-07-02 13:48 @616

Depende de qué consola sea (y sistema operativo), pero por lo general, todo se basa en los caracteres que usas para controlar el cursor.

Por ejemplo, un mini-reloj:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
$ perl -e '$|++; while ("para siempre") { print "\r", scalar localtime; sleep 1 }'
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

El truco es el siguiente: cuando sale la hora, el cursor queda justo al final del texto, en la misma línea. En la siguiente vuelta del bucle, el primer carácter que sacamos es un "\r", que es el carácter Retorno de carro (en MSDOS/Windows y en UNIX/Linux), que lo que hace es colocar el cursor en la primera columna de la pantalla. Y ahí pintamos la hora, que sobre escribe a la anterior.
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: Borrar carácter de la consola de salida

Notapor desdechina » 2013-07-04 05:11 @257

Hola:

Había estado intentando algo parecido pero el problema que tengo es que hasta que no pongo un salto de línea (\n) no escribe la salida por lo que no puedo sobreescribir nada con \r ya que no tengo nada en la salida.

Y si pongo

print "\r", scalar localtime; sleep 1; "\n";

Ya estoy en otra línea.
desdechina
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2013-01-11 08:21 @389

Re: Borrar carácter de la consola de salida

Notapor explorer » 2013-07-04 07:28 @352

Para que salga en pantalla, de forma inmediata, todo lo que le enviamos con un print(), hay que indicarle, antes, a Perl, que desactive el sistema de caché de salida.

El sistema de caché guarda la información a sacar, hasta que le enviamos un "\n", que es lo que estás viendo que sucede en tu máquina.

Para desactivar el sistema de caché, para la salida estándar, basta con poner a "1" la variable especial $| (fíjate bien en mi mini-programa).

Más información en tu propio ordenador en perldoc perlvar, y en la Web (traducido al español).
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: Borrar carácter de la consola de salida

Notapor desdechina » 2013-07-04 08:48 @408

Fenómeno, mil gracias.
¡¡¡¡¡Ya me ha salido!!!!!
desdechina
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2013-01-11 08:21 @389


Volver a Básico

¿Quién está conectado?

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

cron