[SP-pm] Automatizando consulta IBM com Perl ou Expect
Frederico Melo
fdmmelo at gmail.com
Thu May 2 13:13:47 PDT 2013
Eden! Obrigado! Funcionou! Muito obrigado mesmo!
Sem querer abusar, gostaria de entender melhor como crio os blocos de
processamento dentro do expect. Por exemplo:
#$exp->expect(5, [qr/.{1920}/ => sub {
# my($self) = @_;
# print $self->match;
#
# exp_continue;
# },
# timeout => sub { die 'o sistema parou de responder' }
# ]
# );
Entendo que no bloco acima, limitado pelo primeiro "(" e o último ")"
executo o print que corresponde ao retorno da REGEX. OK! É possível, dentro
do mesmo bloco do expect, criar vários blocos limitados por "[" e "]" e
processar várias REGEXs? Como faço isso? Seria algo como feito abaixo?
#$exp->expect(5, [qr/.{1920}/ => sub {
# my($self) = @_;
# print $self->match;
#
# exp_continue;
# },
# timeout => sub { die 'o sistema parou de responder' }
# ],
#
# [qr/DATA\s+.:(.+)/ => sub {
# my($self1) = shift;
# print $self1->match;
#
# exp_continue;
# },
# timeout => sub { die 'o sistema parou de responder' }
# ]
# );
Fiz isso no código e não há print do $self1, como se o código nem entrasse
no segundo bloco de REGEX. Se coloco o segundo bloco de REGEX no lugar do
primeiro, o print funciona. O que está errado?
Procurei na documentação do Expect e vi que existe uma chamada para
CallBacks. Tipo:
$exp->expect($timeout,
[ qr/regex1/ => sub { my $exp = shift;
$exp->send("response\n");
exp_continue; } ],
[ "regexp2" , \&callback, @cbparms ],
);
Não soube como utilizar isso. Seria possível ajudar?
Obrigado novamente e desculpe a trabalheira.
Frederico
2013/4/29 Eden Cardim <eden at insoli.de>
>
> Experimenta trocar as regex mencionadas abaixo pelas sugestões que
> seguem:
>
> Frederico> data: SIGLA.........: XYZ NUMERO DO COD.: 0DD
> Frederico> qr/data:\s+(.+)NUMERO\s+(.+)/
>
> qr/NUMERO DO COD\.*?:\s*?(\S+)/;
>
> Frederico> data: LOCALIDADE....: XISYPSZE
> Frederico> qr/data:\s+LOCALIDADE(.+)/
>
> qr/LOCALIDADE\.*?:\s*?(\S+)/;
>
> --
> Eden Cardim -- Insolide Soluções de TI Ltda.
> +55 11 9644 8225
> http://insoli.de
> =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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130502/82967e99/attachment.html>
More information about the SaoPaulo-pm
mailing list