[SP-pm] perl - expect

Andre Carneiro andregarciacarneiro at gmail.com
Fri Apr 18 07:33:14 PDT 2014


De fato, no Perl 5.16 given é rotulado como 'experimental' e quando vc o
utiliza aparecem um monte de warnings..


De qualquer forma, creio que o pessoal está sentido falta de alguns
detalhes do problema. Seria possível você explicar com mais detalhes,
Frederico? Talvez um 'snippet' do seu código?




2014-04-18 11:24 GMT-03:00 Leonardo Ruoso <leonardo at ruoso.com>:

> Em 18 de abril de 2014 11:14, Tiago Peczenyj <tiago.peczenyj at gmail.com>escreveu:
>
>> What?
>>
>
> *given, when and ~~  *
>
>
>>  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
>>>
>>>
>> =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
>>
>>
>
>
> --
> Leonardo Ruoso
> Journalist, Perl developer and business consultant
> Media, UFC/2006; Telecom, IFCE/1998
>
> =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
>
>


-- 
André Garcia Carneiro
Software Engineer
(11)982907780
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20140418/d2d9efb1/attachment-0001.html>


More information about the SaoPaulo-pm mailing list