• Publicidad

Editar datos en un STDIN

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

Editar datos en un STDIN

Notapor BigBear » 2016-04-06 11:54 @537

Hola, tengo este código. Tengo pensado editar datos de una columna de una BD. Muestro los datos en el stdin y desde ahí lo edito y le doy Entrar teniendo todo editado. El tema es que no sé cómo hacer eso, no parece posible...

El código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print "\n[+] Texto : ";
  2. chomp(my $texto = <STDIN>);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


¿ Se puede hacer esto ?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Editar datos en un STDIN

Notapor explorer » 2016-04-06 16:24 @725

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: Editar datos en un STDIN

Notapor BigBear » 2016-04-07 10:19 @472

Ok, gracias por responder. Estoy tratando de hacerlo pero no sé dónde poner el texto por defecto para editar. Lo puse en $fake_line y antes del OUT pero aún así no logro el efecto deseado. También lo intenté poniendo en readline() pero en esa función no se puede editar.

El código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Term::ReadLine;
  2.  
  3. my $fake_line = "bla bla bla";
  4.  
  5. $term = Term::ReadLine->new("APP DESCRIPTION");
  6. $OUT = $term->OUT || *STDOUT;
  7.  
  8. $term->addhistory($fake_line);
  9. my $line = $term->readline("Text : ");
  10.  
  11. print $line;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¿ Cómo tendría que hacer ?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Editar datos en un STDIN

Notapor explorer » 2016-04-09 16:12 @717

Es complicado, porque depende de la biblioteca Term::ReadLine::* que tengas instalada. Quiero decir que Term::ReadLine no hace mucho por sí sola, así que lo que hace es llamar a Term::ReadLine::Perl o Term::ReadLine::Gnu o Term::ReadLine::Gnu::XS o cualquier otra que esté instalada.

Yo, por ejemplo, he instalado Term::ReadLine::Gnu, y sí que me permite poner un texto como tu quieres. Se trata de la característica 'preput'. Si está presente, entonces se puede llamar a readline() con un segundo argumento, que es el texto que queremos que el usuario reedite.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/env perl
  2. use v5.10.1;                                    # vamos a usar say()
  3. #use Data::Dumper;                              # ver el contenido de algunas variables
  4. use Term::ReadLine;                             # cargamos la biblioteca genérica
  5.  
  6. #say Dumper \%INC;                              # ver qué bibliotecas se han leído
  7.                        
  8. my $prompt    = 'Text : ';
  9. my $fake_line = "bla bla bla";
  10. my $new_line;
  11.  
  12.  
  13. my $term = Term::ReadLine->new("App");
  14. #say Dumper $term->Attribs;     # ver los atributos de los que disponemos
  15. #say Dumper $term->Features;    # ver las características de las que disponemos
  16.  
  17.  
  18. # ver si es posible llamar a readline() con un segundo arg.
  19. if (not $term->Features->{'preput'}) {
  20.     say "No existe la opción de 'preput'";
  21.  
  22.     $new_line = $term->readline($prompt);
  23. }
  24. else {
  25.     $new_line = $term->readline($prompt, $fake_line);
  26. }
  27.  
  28. say $new_line;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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: Google [Bot] y 4 invitados