Exporter permite definir de manera precisa la interfaz
externa de nuestro módulo. Para ello deberemos escribir el siguiente
código en NuestroModulo.pm
package NuestroModulo; use strict; use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION); use Exporter; $VERSION = '1.00'; @ISA = qw(Exporter); @EXPORT = qw(...); # Símbolos a exportar @EXPORT_OK = qw(...); # Símbolos a exportar a petición %EXPORT_TAGS = ( TAG1 => [...], TAG2 => [...], ... ); ###################### Nuestro código va aqui ###################### 1;En los ficheros desde los que queremos usar nuestro módulo deberemos escribir una de estas líneas:
use NuestroModulo; # Importar los símbolos por defecto use NuestroModulo qw(...); # Importar los símbolos listados use NuestroModulo (); # No importar símbolos use NuestroModulo qw(:TAG1)# Importar el conjunto del tag
Cuando alguien escribe use NuestroModulo, ello implica
un require "NuestroModulo.pm" seguido de una llamada
a NuestroModulo->import() durante la compilación.
El método import, que es heredado del módulo
EXPORTER usa un conjunto de variables en el paquete que gobiernan
la conducta de exportación del módulo.
Estas variables son:
$VERSION
Se usa asi:
use NuestroModulo '1.5' # Si $VERSION < 1.5 error
@EXPORT
Contiene la lista de funciones y variables que serán exportadas por defecto al espacio de nombres del cliente.
EXPORT_OK
Este vector contiene los símbolos que serán cargados únicamente si se pregunta específicamente por ellos. Si los vectores se cargan asi:
@EXPORT = qw(&F1 &F2 @List); @EXPORT_OK = qw(Op_Func %table);Y el usuario carga el módulo como sigue:
use NuestroModulo qw(Op_Func %Table F1);Entonces importamos las funciones
Op_func y F1
y el hash %Table pero no la función F2
y el vector @List.
Puesto que las variables @EXPORT,
@EXPORT_OK y %EXPORT_TAGS
son del paquete cuyo nombre casa con el del
fichero5.1,
es necesario declararlas con ours o bien
utilizar el pragma use vars para
satisfacer el uso de use strict sin que se
produzcan mensajes de error.
Casiano Rodríguez León
