[SP-pm] Perl para automação em acesso a x3270 IBM

Marcio - Google marciorp at gmail.com
Tue Jul 10 18:20:58 PDT 2012


Em 10 de julho de 2012 04:16, Nelson Ferraz <nferraz em gmail.com> escreveu:
> Em 10 de julho de 2012 03:16, Marcio - Google <marciorp em gmail.com> escreveu:
>> Olá Nelson, obrigado!
>>
>> Sobre a sugestão 1, vou usar a partir de agora. O eles fazem?
>
> use strict, entre outras coisas, torna a declaração de variáveis
> obrigatória. Isso ajuda a evitar muitos tipos de erros.
> use warnings mostra alertas úteis.
>
>> Em relação ao pump, eu tentei usar, mais não sei o que esperar de
>> retorno. Pode ser qualquer coisa ou simplesmente nada.
>
> Se você não sabe o que esperar, pode usar um timer. Se você sabe, aí
> pode usar uma expressão regular.
>
>> O código adaptado ficou assim:
>>
>> my $h = start \@s3270, \$in, \$out, \$err, timeout( 100 );
>> ...
>> $in .= "Ascii(0,0,24,80)\n";
>> pump $h while length $in;     #Até aqui tudo certo. Pelo que entendi
>> ele fica no loop até enviar toda a entrada.
>
> Foi isso o que eu entendi também.
>
> Você tentou verificar o resultado em $out depois de executar o pump?

Sim. Sempre vazio. Tentei usar o sleep para esperar 2 segundos mais nada.

>
> Verifique também como usar um timer, pois as vezes existe um pequeno
> delay entre o envio e a resposta.
>
> Finalmente... talvez seja bom colocar os seus comandos em um array e
> enviá-los para uma sub:
>
>
> my @commands = (
>     "command1",
>     "command2",
>     "command3",
> );
>
> my $res = run_these(@commands);
>
> sub run_these {
>     my @cmd = @_;
>
>     # prepare
>     # ...
>
>     for my $cmd (@cmd) {
>          # run
>          # ...
>     }
>
>     # return
>     return $out;
> }
>
> Com isso você não precisará ficar concatenando strings, e poderá
> executar os comandos assim:
>
> my $res = run_these(
>     'command1',
>     'command2',
>     'command3',
> );
>
> # do something with $res1
>
> my $res = run_these(
>     'command4',
>     'command5',
>     'command6',
> );
>
> # do something with $res2

Entendi, vou montar o código e testar.

Muito obrigado pelas dicas ... uma hora eu aprendo Perl ... :-)

>
> # so on...
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer


More information about the SaoPaulo-pm mailing list