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