Bienvenido a los foros de Perl en Español, Damian.
Parece que estás usando el protocolo CGI para hacer el intercambio de información.
Quizás en realidad lo que quieras es usar el protocolo SOAP. Para ello, hay varios módulos al respecto, como el
SOAP::Lite. En estos foros hemos hablado alguna vez sobre este tema.
Se puede simplificar un poco el trabajo para realizar el intercambio de información mediante CGI.
Con este programa creamos la petición:
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use HTTP::Request::Common qw(POST);
use LWP::UserAgent;
my $mensaje = q'<?xml version="1.0" encoding="UTF-8"?>
<TollChargeExchangeMessage CreateRef="Info24" MsgVer="2.2" RegionalUnits="Metric" TimeZone="UTC">
<msgId>1bdf48c5</msgId>
<msgSender>
<informationSenderID>2bdf48c5</informationSenderID>
</msgSender>
<msgExpiryTime>2010-04</msgExpiryTime>
</TollChargeExchangeMessage>';
my $ua = LWP::UserAgent->new;
my $req = POST 'http://correo.joaquinferrero.com/~explorer/cgi-bin/code_18887.pl',
[ mensaje => $mensaje ];
print $ua->request($req)->as_string;
__END__
No hay que destacar mucho. Se ha sacado de la página de manual de
lwpcook. Simplemente creamos el mensaje y hacemos la petición POST.
Y este es el programa que lee el mensaje, extrae y muestra la información.
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use CGI ':standard';
use CGI::Carp 'fatalsToBrowser';
if (my $mensaje = param('mensaje')) {
(my $msgId) = $mensaje =~ m/<msgId>(.*?)</s;
print
header,
start_html,
p($msgId),
end_html
;
}
Solo leemos el valor almacenado en el parámetro 'mensaje', extraemos el valor del msgId por medio de una expresión regular, y lo mostramos en un HTML sencillo.