Renato, O expect é esse mesmo! Por enquanto não tive problema com a regex. Fiz um perl para cada uma das ocorrências que procuro e funcionou. O meu problema acho que é mais no perl com o expect na estrutura que mostrei. O expect e o perl não estão disparando a função certa para a ocorrência desejada...
Mas, se rodo os perls específicos para as ocorrências encontradas ele processa certinho. O formato de saida do servidor é texto flat puro... as regex buscam pelas strings sem erro... Por favor help! Frederico 2014-04-17 17:03 GMT-03:00 Renato Santos <[email protected]>: > Não sei de qual expect você ta falando. > > Pode ser do https://metacpan.org/pod/distribution/Expect/Expect.pod > > mas mesmo assim, eu nunca usei ele, mas pelo que li rapidamente, ele > funciona lendo o STDOUT/ERR de um processo e escrevendo as respostas > dependendo das regexp no STDIN. > > Você pode confirmar se é isso? > Se for, qual o formato que esta o texto de entrada (ou seja, a saida do > aplicativo) assim podemos ensinar qual regexp você precisa usar. > > > 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 >> >> > > > -- > Saravá, > Renato CRON > http://www.renatocron.com/blog/ > @renato_cron <http://twitter.com/#!/renato_cron> > > =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
