[SP-pm] perl - expect

Tiago Peczenyj tiago.peczenyj at gmail.com
Fri Apr 18 07:14:23 PDT 2014


What?
Em 18/04/2014 10:58, "Vinícius Miasato" <viniciusmiasato at gmail.com>
escreveu:

> Opa,
>
> given não deveria ser evitado? Aliás não precisamos de given at all, certo?
>
> atenciosamente,
> Vinícius Miasato
> Em 17/04/2014 17:41, "Tiago Peczenyj" <tiago.peczenyj at gmail.com> escreveu:
>
>> se o cara vai ler da stdin ( e estamos admitindo que o cara fez um pipe
>> para o script ) ok, mas o Expect te dá apenas a opção de controlar o
>> timeout com processo como também é bidirecional.
>>
>> sem saber mais detalhes fica impossivel ajudar.
>>
>> 2014-04-17 17:33 GMT-03:00 Daniel de Oliveira Mantovani <
>> daniel.oliveira.mantovani at gmail.com>:
>>
>>> Oxi, você pode fazer isso sem usar expected....
>>>
>>> given(<STDIN>) {
>>>
>>> }
>>>
>>> 2014-04-17 17:31 GMT-03:00 Frederico Melo <fdmmelo at gmail.com>:
>>> > Oi Daniel,
>>> >
>>> > Preciso do expect pois vou interagir com o servidor. E analiso o que
>>> esse
>>> > servidor escreve em uma tela para tomar a decisão do próximo passo...
>>> >
>>> > A estrutura que você sugeriu é legal mas, acho que só interagindo
>>> dentro do
>>> > perl.
>>> >
>>> > Obrigado,
>>> >
>>> >
>>> > 2014-04-17 17:17 GMT-03:00 Daniel de Oliveira Mantovani
>>> > <daniel.oliveira.mantovani at gmail.com>:
>>> >
>>> >> Porque você quer usar expected ? (Seja lá o que esse método que você
>>> >> não especificou de onda venha faz).
>>> >>
>>> >>            given ($text) {
>>> >>                obj() when /OBJETIVO/;
>>> >>                consulta() when /CONSULTA/;
>>> >>            }
>>> >>
>>> >> 2014-04-17 17:01 GMT-03:00 Tiago Peczenyj <tiago.peczenyj at gmail.com>:
>>> >> > nunca usei assim mas baseado neste documento:
>>> >> >
>>> >> > http://search.cpan.org/~rgiersig/Expect-1.15/Expect.pod
>>> >> >
>>> >> > vc teria que usar o exp_continue no fim de cada subrotina.
>>> >> >
>>> >> >
>>> >> > 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
>>> >> >>
>>> >> >
>>> >> >
>>> >> >
>>> >> > --
>>> >> > Tiago B. Peczenyj
>>> >> > Linux User #405772
>>> >> >
>>> >> > http://about.me/peczenyj
>>> >> >
>>> >> > =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
>>> >> >
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >>
>>> >> -dom
>>> >>
>>> >> --
>>> >>
>>> >> Daniel de Oliveira Mantovani
>>> >> Business Analytic Specialist
>>> >> Perl Evangelist /Astrophysics hobbyist.
>>> >> +55 11 9 8538-9897
>>> >> XOXO
>>> >> =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
>>> >
>>> >
>>> >
>>> > =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
>>> >
>>>
>>>
>>>
>>> --
>>>
>>> -dom
>>>
>>> --
>>>
>>> Daniel de Oliveira Mantovani
>>> Business Analytic Specialist
>>> Perl Evangelist /Astrophysics hobbyist.
>>> +55 11 9 8538-9897
>>> XOXO
>>> =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
>>>
>>
>>
>>
>> --
>> Tiago B. Peczenyj
>> Linux User #405772
>>
>> http://about.me/peczenyj
>>
>> =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
>>
>>
> =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/20140418/76650dd0/attachment-0001.html>


More information about the SaoPaulo-pm mailing list