[SP-pm] perl - expect

Leonardo Ruoso leonardo at ruoso.com
Fri Apr 18 07:24:47 PDT 2014


Em 18 de abril de 2014 11:14, Tiago Peczenyj <tiago.peczenyj em gmail.com>escreveu:

> What?
>

*given, when and ~~ *


>  Em 18/04/2014 10:58, "Vinícius Miasato" <viniciusmiasato em 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 em 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 em gmail.com>:
>>>
>>>> Oxi, você pode fazer isso sem usar expected....
>>>>
>>>> given(<STDIN>) {
>>>>
>>>> }
>>>>
>>>> 2014-04-17 17:31 GMT-03:00 Frederico Melo <fdmmelo em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em 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 em pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>


-- 
Leonardo Ruoso
Journalist, Perl developer and business consultant
Media, UFC/2006; Telecom, IFCE/1998
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20140418/fd885f5a/attachment.html>


More information about the SaoPaulo-pm mailing list