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 < [email protected]>: > Oxi, você pode fazer isso sem usar expected.... > > given(<STDIN>) { > > } > > 2014-04-17 17:31 GMT-03:00 Frederico Melo <[email protected]>: > > 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 > > <[email protected]>: > > > >> 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 <[email protected]>: > >> > 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 <[email protected]>: > >> >> > >> >> 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: [email protected] > >> >> 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: [email protected] > >> > 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: [email protected] > >> 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: [email protected] > > 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: [email protected] > 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: [email protected] L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer
