Next Previous Contents

2. Perl y sus módulos

2.1 Instalar un modulo en un directorio propio


export PERL5LIB=/home/barreiro/libperl
perl Makefile.PL LIB=/home/barreiro/libperl PREFIX=/home/barreiro/libperl

Despues para usar las librerias en nuestros programas se pueden usar varias sintaxis


export PERL5LIB=/home/barreiro/libperl


use lib qw(/home/barreiro/libperl);


perl -I/path/to/module 

En el fichero


 /home/barreiro/libperl/i586-linux/perllocal.pod

se encuentra un registro de los modulos instalados

2.2 Crear un paquete binario.

Creacion en la maquina origen


mkdir /home/barreiro/install
perl Makefile.PL LIB=/home/barreiro/install PREFIX=/home/barreiro/install
make 
make install
cd /home/barreiro/install
tar cvfz modulo.tgz *

Instalación en la maquina destino


cd /usr/local/lib/perl
tar xvfz modulo.tgz

2.3 Ejecución remota con RPC

Crear un servidor de funciones y su correspondiente cliente es muy sencillo si usamos RPCs.

Veamos el codigo del servidor de funciones:


#! /usr/bin/perl

use RPC;

$host="172.16.1.5";
$port="20000";

RPC->new_server($host,$port);
RPC->event_loop();

sub rutina1 {
  my ($comando)=@_;
  $res=`$comando`;
  print "$res\n";
  return "respuesta:$res";
}

El codigo del cliente es aun mas sencillo:


#! /usr/bin/perl

use RPC;

$host="172.16.1.5";
$port="20000";

$comando=$ARGV[0];
my $conexion = RPC->connect($host,$port);
my $respuesta = $conexion->rpc('rutina1',"$comando");

print "$respuesta\n";

2.4 Ejecución remota con SOAP

Crear un servidor de funciones y su correspondiente cliente es igual de sencillo si usamos el protocolo SOAP

Veamos el codigo del servidor de funciones:


#! /usr/bin/perl
use SOAP::Transport::HTTP;

use Demo;

my $daemon = SOAP::Transport::HTTP::Daemon
  -> new (LocalPort => 8081)
  -> dispatch_to ('Demo')
;
if ($daemon){
print "Acceso al servidor Soap via:", $daemon->url,"\n";
$daemon->handle;
}else{
print "No puedo abrir el seervidor\n";
}

Los modulos Demo y Otro contienen las funciones que ofrece la interfaz del servidor a los clientes


#! /usr/bin/perl -w
package Demo;
sub hola {
  my ($funcion_llamada,$nombre)=@_
  return "$funcion_llamada: Hola $nombre\n";
}
sub adios {
  my ($funcion_llamada,$nombre)=@_
  return "$funcion_llamada: Hola $nombre\n";
}

1;

El codigo del cliente se muestra a continuación


#! /usr/bin/perl

#use SOAP::Lite +trace => all;
use SOAP::Lite;

my $client =SOAP::Lite->uri('Demo');
$client->proxy('http://pt2:8081/soapdaemon.pl');

my $response = $client->hola("Manuel");
print $response->result;

my $response = $client->adios("Manuel");
print $response->result;

print "faultcode\n";
print $response->faultcode;
print "\n";
print "faultstring\n";
print $response->faultstring;
print "\n";
print "faultdetail\n";
print $response->faultdetail;
print "------------------------\n";


Next Previous Contents