Creación de paquetes y módulos

Podemos crear un módulo con subrutinas o estructuras de datos que nos hayan sido especialmente útiles y que sigamos usando de forma repetida. En teoría basta con que creéis un archivo paquete.pm que contenga las siguientes líneas:

package paquete;

# lo que venga aqui es el contenido del modulo

1;

Ahora os muestro un ejemplo de paquete genérico que contiene dos subrutinas:

package operaciones_tipicas;

use Exporter;

our @ISA    = qw(Exporter);
our @EXPORT = qw( subrutina2 $variable_exportable ); 

our $variable_exportable;

sub subrutina1_interna #no se exporta, no se puede invocar desde fuera
{
	my ($parametros) = @_;
	# codigo de subrutina
	my $resultados;
	#...
	
	return ($resultados)  
}

sub subrutina2
{
	# codigo de subrutina 
	# llama a subrutina1
	my $datos = subrutina1_interna(time());
	
	#otras operaciones...
	$variable_exportable = $datos;
}

1;  # convencion para terminar un paquete

Para utilizar este módulo desde otro programa podríamos:

#!/usr/bin/perl -w 
# Ejemplo escrito por Bruno Contreras 

use strict;
use operaciones_tipicas;  

subrutina2();                # acceso a una subrutina del modulo  
print $variable_exportable;  # acceso a una variable del modulo

Al instalar el intérprete Perl viene incluido el programa h2xs que nos ayuda a crear paquetes siguiendo una plantilla genérica. Para crear el paquete ejemplo haríamos:
$ h2xs -Xn ejemplo .

Que a mi me devuelve:

Defaulting to backwards compatibility with perl 5.8.5
If you intend this module to be compatible with earlier perl versions, please
specify a minimum perl version with the -b option.

Writing ejemplo/lib/ejemplo.pm
Writing ejemplo/Makefile.PL
Writing ejemplo/README
Writing ejemplo/t/ejemplo.t
Writing ejemplo/Changes
Writing ejemplo/MANIFEST

El programa crea un subdirectorio con el nombre del paquete y coloca ahí una plantilla ya iniciada de ejemplo.pm donde deberemos ir añadiendo el código que deseemos. Además, el programa genera documentación que acompaña al paquete e instrucciones para compilarlo y finalmente instalarlo en tu sistema.

Si queréis contribuir con algún módulo a CPAN deberán ir en el formato generado por h2xs.

Bruno Contreras-Moreira
http://www.eead.csic.es/compbio