Olá Prof. Eden,
Montei esse primeiro exemplo, tipo "Olá mundo!", mais esbarrei em um
erro que não consigo resolver.
#!/usr/bin/perl
use strict;
use warnings;
use Expect;
my $exp = Expect->spawn('s3270');
$exp->log_file('/home/marcio/teste3.log');
my $cmd1 = "connect(10.1.8.192:23)\n";
$cmd1 .= "wait(InputField)\n";
$exp->send($cmd1);
$exp->expect(100, [qr/.{1920}/ => sub {
my($self) = @_;
print $self->match;
exp_continue;
},
timeout => sub { die 'o sistema parou de responder' }
]
)
Roda certinho, pelo menos não dá erro nenhum, o problema é que como se
no lugar do "\n" no final dos comandos, ele trocasse por "^M", e ai dá
erro no s3270. No mesmo exemplo usando o IPC::Run não acontece isso.
Veja a saída no terminal:
connect(10.1.8.192:23)^M
wait(InputField)^M
L U U N N 4 24 80 0 0 0x0 0.024^M
error^M
data: Wait: Not connected^M
L U U N N 4 24 80 0 0 0x0 -^M
error^M
E o arquivo de log (/home/marcio/teste3.log):
connect(10.1.8.192:23)^M
wait(InputField)^M
L U U N N 4 24 80 0 0 0x0 0.026
error
data: Wait: Not connected
L U U N N 4 24 80 0 0 0x0 -
error
Tem alguma ideia?
Em tempo, essa expressão (qr/.{1920}/) pega o retorno com 1920
caracteres. Vou colocar várias expressões, agora como faço uma tipo
"default", se não casar com nenhuma das anteriores cai nessa última?
Desculpe a lerdeza, mais é que como disse não sou programador, tó
quebrando um galho para resolver um problema do meu sistema Asterisk.
Abs,
Marcio.
=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