Oi Tiago, o expect é esse mesmo! Acho que meu problema vem antes disso... será? Sinceramente não sei... help!!! Eu queria que a estrutura que fiz, só disparasse uma rotina para a ocorrência da string encontrada. Da maneira que está, ele está disparando apenas a primeira sub, independente da string...
Sei que a regex para encontrar a string está certa pois, nos códigos .pl que tenho específicos para cada situação, quando rodo individualmente, funciona! Vou testar o que você sugere com o exp_continue e lhe falo. Obrigado, help! Frederico 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 > >
=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
