[SP-pm] perl - expect

Frederico Melo fdmmelo at gmail.com
Thu Apr 17 13:22:45 PDT 2014


Renato,

O expect é esse mesmo! Por enquanto não tive problema com a regex. Fiz um
perl para cada uma das ocorrências que procuro e funcionou. O meu problema
acho que é mais no perl com o expect na estrutura que mostrei. O expect e o
perl não estão disparando a função certa para a ocorrência desejada...

Mas, se rodo os perls específicos para as ocorrências encontradas ele
processa certinho.

O formato de saida do servidor é texto flat puro... as regex buscam pelas
strings sem erro...

Por favor help!

Frederico


2014-04-17 17:03 GMT-03:00 Renato Santos <renato.cron at gmail.com>:

> Não sei de qual expect você ta falando.
>
> Pode ser do https://metacpan.org/pod/distribution/Expect/Expect.pod
>
> mas mesmo assim, eu nunca usei ele, mas pelo que li rapidamente, ele
> funciona lendo o STDOUT/ERR de um processo e escrevendo as respostas
> dependendo das regexp no STDIN.
>
> Você pode confirmar se é isso?
> Se for, qual o formato que esta o texto de entrada (ou seja, a saida do
> aplicativo) assim podemos ensinar qual regexp você precisa usar.
>
>
> 2014-04-17 16:58 GMT-03:00 Frederico Melo <fdmmelo at gmail.com>:
>
>> 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
>>
>>
>> =begin disclaimer
>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>>
>
>
> --
> Saravá,
> Renato CRON
> http://www.renatocron.com/blog/
> @renato_cron <http://twitter.com/#!/renato_cron>
>
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20140417/29e57c93/attachment.html>


More information about the SaoPaulo-pm mailing list