• Publicidad

Borrar con stdin

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

Borrar con stdin

Notapor eandres25 » 2010-06-15 19:06 @837

Buenas, alguien sabe cómo hacer para que cuando un usuario deba escribir algo con stdin, si se equivoca y desea borrar generalmente aparece ^H, pero no deseo que esto pase, quiero que simplemente se borre la letra como es normal que suceda.

De ante mano, gracias, y espero darme a entender.
eandres25
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2010-06-15 19:00 @833

Publicidad

Re: Borrar con stdin

Notapor explorer » 2010-06-16 04:40 @236

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

Es un efecto de la terminal en donde estás trabajando. ¿En qué sistema operativo y terminal estás?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Borrar con stdin

Notapor eandres25 » 2010-06-16 09:28 @436

¡Hola! Muchas gracias por tu respuesta,

Estoy trabajando en un servidor Debian. ¿Hay alguna forma de hacer que esto no suceda? Lo que pasa es que personas no muy familiarizadas con consola utilizan el script y si se equivocan deben borrar, y cuando lo hacen aparece los caracteres mencionados y es muy incómodo, si hasta para mí lo es (no quiere decir que yo tenga muuuucha experiencia, pero bueno...) y realmente me gustaría poder brindar una solución y de paso que quede de aprendizaje tanto para mí como para otros usuarios, porque estuve buscando en Google y nada parecido encontré, quizá no acerté en los términos de búsqueda, pero para que yo pregunte en un foro ya tuve que haber buscado...

¡De nuevo muchas gracias!
eandres25
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2010-06-15 19:00 @833

Re: Borrar con stdin

Notapor salva » 2010-06-16 11:36 @525

eandres25 escribiste:...personas no muy familiarizadas con consola utilizan el script y si se equivocan deben borrar, cuando lo hacen aparece los caracteres mencionados y es muy incómodo...

Si lo que quieres es permitir una edición cómoda al usuario de la línea de comandos tal y como hace cualquier shell moderna, entonces utiliza Term::ReadLine::Gnu o algún otro de los paquetes similares que hay en CPAN.
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

Re: Borrar con stdin

Notapor eandres25 » 2010-06-16 12:05 @545

¡Muchas gracias por tu ayuda!

Me sale esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Can't locate Term/ReadLine/Gnu.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at /usr/local/bin/idescrip line 8.
BEGIN failed--compilation aborted at /usr/local/bin/idescrip line 8.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Utilicé el comando siguiente:

use Term::ReadLine::Gnu

Recuerda que soy principiante, ¡por favor!

Gracias!
eandres25
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2010-06-15 19:00 @833

Re: Borrar con stdin

Notapor explorer » 2010-06-16 12:14 @551

El módulo no ha sido instalado.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Borrar con stdin

Notapor explorer » 2010-06-16 12:38 @568

eandres25 escribiste:Estoy trabajando en un servidor Debian.
Esto es muy raro... lo normal, en las distribuciones modernas de Linux, es que la terminal esté correctamente configurada.

¿Trabajas directamente en el ordenador, o te conectas al ordenador desde otro, usando un programa de terminal? ¿Qué terminal?

Haz un

echo $TERM

desde la terminal para saber si está correctamente configurada la indicación de que terminal es. Es decir: el sistema Linux debe saber qué tipo de terminal es la que se ha conectado a él, para saber que cuando reciba por teclado un ^H, debe responder con la secuencia de escape que haga retroceder el cursor una posición y borre la letra.

La definición de todo esto, estará normalmente en /etc/termcap. En Mi SuSE ocupa casi 1Mb. Mi terminal es xterm o linux.

El módulo recomendado por Salva añade unas cuantas características más, como por ejemplo, consultar el histórico. Pero antes debes resolver el tema de la terminal.

Un error frecuente es conectarse a Linux desde un Windows, usando un programa como el SecureCRT o el PuTTy, y que no coincida la terminal definida en estos programas con la que el Linux piensa que debe utilizar.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Borrar con stdin

Notapor salva » 2010-06-16 12:40 @569

explorer escribiste:El módulo no ha sido instalado.

En Debian también puedes instalarlo como un paquete del sistema operativo. Hay muchos módulos de CPAN disponibles de esa manera y todos siguen la nomenclatura libnombre-del-modulo-en-minúsculas-y-con-guiones-perl.

En este caso es libterm-readline-gnu-perl.
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

Re: Borrar con stdin

Notapor salva » 2010-06-16 12:59 @582

explorer escribiste:lo normal, en las distribuciones modernas de Linux, es que la terminal esté correctamente configurada.

Pero aunque este correctamente configurada, si tu programa lee de stdin, solo la tecla "Del" funciona y con "Supr" aparece el "^H".

Si lo que pasa es que el "^H" aparece al pulsar "Del", eso se puede solucionar (además de como dice explorer, configurando bien la terminal), con el comando stty. En esta página aparece bastante bien explicado lo que se puede hacer... la página man stty(1), al menos la de Ubuntu, ¡es infumable!
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

Re: Borrar con stdin

Notapor eandres25 » 2010-06-16 14:50 @660

¡Muchas gracias a ambos!

Efectivamente, me conecto desde Win* utilizando SecureCRT (no me gusta la idea, pero es lo que tenemos...), por ahí debe andar el problema.

Pero entonces ¿se puede resolver? Igual voy a leer un poco por aparte, pero me parece que sería bueno resolver esto en el foro para futuras referencias :)
eandres25
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2010-06-15 19:00 @833

Siguiente

Volver a Básico

¿Quién está conectado?

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

cron