[SP-pm] perl - expect

Frederico Melo fdmmelo at gmail.com
Thu Apr 17 12:58:47 PDT 2014


Monges! Socorro!
Sou bem limitado na programação em perl mas estou evoluindo com o tempo.
Então desculpem pelas minhas dúvidas que para vocês, pode ser muito
simples...

Bom, estou utilizando expect com perl e analiso alguns outputs de um
servidor, em forma texto, que devo analisar e, dependendo da ocorrência de
uma string, devo disparar uma determinada sub-rotina para tratativas
específicas.

Ex.: se aparecer a string CONSULTA, devo disparar a subrotina consulta()
Se aparecer a string OBJETIVO, devo disparar a subrotina obj() e assim por
diante.

O output do servidor é verificado pelo expect e, no momento que devo tomar
a decisão, a tela do output é apenas uma, com apenas uma das ocorrências
abaixo.

Para verificar isso, estruturei o código .pl assim:

$exp->expect(2,

              [ qr/SELECIONE/ => \&select()],

              [ qr/OBJETIVO/ => \&obj()],

              [ qr/AGUARDE/ => \&sai_6()],

              [ qr/CONSULTA/ => \&consulta()],

              [ timeout => \&cancela() ],

              );
Ou seja, no meu entendimento limitado, quero que o expect dispare uma das
subs acima dependendo da string que ele encontrar no output do servidor.

Acredito que a estrutura acima, que parece uma matriz (desculpem a
ignorância), vai executar TODAS as subs independente do conteúdo do output
do servidor.

O que está acontecendo é que o expect ou o perl só dispara a primeira
sub... select()... independente da string encontrada...

Sei que a condição para encontrar as strings funcionam pois, fiz um perl
com expect para cada condição acima e, quando rodo individualmente cada
.pl, funciona certo... o que estou errando? Como devo fazer o que preciso?

Por favor, ajudem!

Muito obrigado,
Atte.,
Frederico
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20140417/dac61a46/attachment.html>


More information about the SaoPaulo-pm mailing list