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