• Publicidad

Problema con flechas de teclado por consola

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

Problema con flechas de teclado por consola

Notapor lis » 2017-05-27 10:41 @487

Hola, tengo la siguiente consulta: cuando ejecuto este simple código y me equivoco al escribir y quiero corregirlo desplazándome hacia donde está el error con la flecha del teclado, no puedo. Ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. lis@linux-dvcj:~/ruta> ./r.pl
  2. Ingrese una verdura: zanaoria^[[D    
  3. zanaoria
  4.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Al desplazarme hacia la izquierda con la flecha me sale ^[[D y para corregirlo debo borrar casi completa la palabra. ¿Debo instalar algún modulo o configurar algo?

Gracias por su ayuda.
lis
Perlero nuevo
Perlero nuevo
 
Mensajes: 106
Registrado: 2008-05-27 21:43 @946

Publicidad

Re: Problema con flechas de teclado por consola

Notapor explorer » 2017-05-27 12:07 @546

Es una limitación de la propia terminal, que solo entiende una entrada muy básica de datos. Leer de la terminal es casi como leer de un archivo: o para adelante o para atrás. Ni siquiera entiende el concepto de "ponte aquí en medio" y "recuerda lo que se ha escrito hasta ahora".

Para paliar estas carencias, se suelen usar bibliotecas que gestionan la entrada de datos, observando lo que hace el usuario (insertar, borrar, sustituir, mover el cursor, etc.).

Un ejemplo es Term::ReadLine y alguno de sus derivados. Por ejemplo, si tenemos instalado Term::ReadLine::Gnu, podemos usar Term::ReadLine para conseguir exactamente lo que quieres:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. $ perl -MTerm::ReadLine  -E '$term = Term::ReadLine->new("Entrada"); $x = $term->readline("Entra un texto: "); say "[$x]"'
  2. Entra un texto: mi casa, tus y mis reglas.
  3. [mi casa, tus y mis reglas.]
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Antes de que el usuario pulse la tecla de Entrar, puede moverse por el texto y modificarlo como quiera. Se puede incluso tener un historial de texto introducido antes.

Observa que cargamos el módulo Term::ReadLine. Él se encargará de leer Term::ReadLine::Gnu de forma automática, al darse cuenta de que está en un sistema Gnu.

Hay más módulos Term::ReadLine para distintos entornos.
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

Re: Problema con flechas de teclado por consola

Notapor lis » 2017-06-05 00:17 @053

Gracias, gracias.
lis
Perlero nuevo
Perlero nuevo
 
Mensajes: 106
Registrado: 2008-05-27 21:43 @946


Volver a Básico

¿Quién está conectado?

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

cron