• Publicidad

Migrando Expect script a Perl

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

Migrando Expect script a Perl

Notapor eduardoantonio » 2011-10-24 15:35 @691

Hola. He estado tratando de migrar un script de bash que usa expect, pero no conozco cómo esperar del programa la subcadena "0 0 0 0" porque realmente no sé qué es lo que imprime. Para que me entiendan, en bash lo hacía así: <expect "*0 0 0 0*" { send "$fecha\r" }> porque los 2 asteriscos encontraban la subcadena "0 0 0 0" dentro de toda la mierda que retorna el programa. que es esta:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
<HYSPLIT47 (Nov 2004) - Initialization
 Enter starting time (year, month, day, hour)
 0 0 0 0 >
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Sin embargo, no sé cuántos espacios hay entre las cosas que quiero esperar del programa y además, son muchas interacciones.

Ahora mi pregunta es: ¿Existe alguna manera de hacer lo mismo en Perl? A continuación les dejo el programa. Gracias de antemano por su ayuda.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Expect;
  2.  
  3. $exp = Expect->new;
  4. $exp->debug();
  5.  
  6. $exp->raw_pty(1);
  7.  
  8. $command = './miprograma';
  9. $exp->spawn($command) or die "Cannot spawn $command: $!\n";
  10. $exp->expect(1,"0 0 0 0");
  11. $exp->send("$fecha\r");
  12. $exp->eof();
  13. $exp->soft_close();
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
eduardoantonio
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2011-10-24 15:11 @674

Publicidad

Re: Migrando Expect script a Perl

Notapor explorer » 2011-10-24 16:59 @749

Bienvenido a los foros de Perl en español, eduardoantonio.

Yo no he usado nunca Expect, pero viendo el manual de ese módulo, el segundo argumento de expect() debe ser un array, que debe guardar el patrón a buscar y un enlace a la subrutina que debe ejecutarse cuando la entrada coincide con el patrón.
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: Migrando Expect script a Perl

Notapor eduardoantonio » 2011-10-25 11:47 @533

Muchas gracias, colega. Mira, lo que pasa es que el programa me devuelve, digamos, esta cadena: < bla bla bla bla 0 0 0 0 bla bla bla, pero cuando pregunto si la cadena <0 0 0 0> está en la cadena mayor, me dice que no. Creo que no estoy preguntando bien. ¿Cómo preguntar con esa sintaxis de expect si en la cadena devuelta está la subcadena <0 0 0 0>? Quizá es porque soy nuevo en Perl. Ya vi cómo se pregunta si una subcadena contiene a otra, pero no logro hacerlo.

# con la sintaxis de Perl
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $exp->expect(100,/(0 0 0 0)/);
  2.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
eduardoantonio
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2011-10-24 15:11 @674

Re: Migrando Expect script a Perl

Notapor explorer » 2011-10-25 12:19 @555

El patrón correcto es el que tenías antes: /0 0 0 0/ .

El problema está en el resto de argumentos que debes dar a expect(), a continuación de ese patrón.
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: Bing [Bot] y 36 invitados

cron