Dom Ago 13, 2006 1:15 am
|
 |
danimera
Perlero Adicto

|
Registrado: 23 Jun 2005
Mensajes: 244
Ubicación: Colombia
|
|
| Creación de módulo |
|
|
| Código: |
package MyModule;
use strict;
use Exporter;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
$VERSION = 1.00;
@ISA = qw(Exporter);
@EXPORT = ();
@EXPORT_OK = qw(func1 func2);
%EXPORT_TAGS = ( DEFAULT => [qw(&func1)],
Both => [qw(&func1 &func2)]);
sub func1 { return reverse @_ }
sub func2 { return map{ uc }@_ }
1; |
Estoy decidiendo hacer un modulo y no se si sea correcto hacer lo que pongo arriba, bueno igual funciona, pero podría explicarme explorer que hacen las lineas,
| Código: |
| Use vars qw( etc........ |
y las diferencias de
| Código: |
| @EXPORT_OK = qw(func1 func2); |
y
| Código: |
%EXPORT_TAGS = ( DEFAULT => [qw(&func1)],
Both => [qw(&func1 &func2)]); |
|
|
|
|

Dom Ago 13, 2006 6:12 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4212
Ubicación: Valladolid, España
|
|
|
|
|
use vars sirve para declarar variables globales que serán efectivas a lo largo de todo el fichero en donde aparecen, a diferencia de our cuyo ámbito es el paquete.
El primer EXPORT_OK indica qué símbolos pueden ser exportados por decisión del usuario, mientras que EXPORT_TAG sirve para agrupar conjuntos de variables que pueden ser exportadas. |
|

Dom Ago 13, 2006 11:17 am
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1390
Ubicación: México
|
|
|
|
|
Hola:
Deja te pongo algunos ejemplos para hacer más claros las variables de EXPORT que te explicó explorer.
Dígamos que en tu módulo tengas la variable @export así:
| Código: |
@EXPORT = qw( mi_funcion );
|
Entonces en tu script de Perl puedes hacer lo siguiente:
| Código: |
use MiModulo; #Cargas tu módulo
mi_funcion(); #Llamas a la función en el módulo
|
Entonces la variable @EXPORT exporta de manera automática lo que le pongas.
Ahora, con el @EXPORT_OK:
| Código: |
@EXPORT_OK = qw( otra_funcion );
|
Entonces en tu script harías algo así:
| Código: |
use MiModulo qw( otra_funcion );
otra_funcion();
|
Con el @EXPORT_OK especificamos todo aquello que está permitido exportar, pero del lado del importador (el script) lo debe de poner de manera explícita.
Ahora, los %EXPORT_TAGS te permiten hacer listas de funciones de exportación, así podrías, por ejemplo, cargar un módulo con las puras funciones más simples, o con todo:
| Código: |
%EXPORT_TAGS = (
DEFAULT => [qw(funcionA funcion B)],
Simple => [qw(funcionA)]
);
|
Entonces en tu script podrías hacer algo así al cargar el módulo:
| Código: |
use MiModulo qw(:DEFAULT);
use MiModulo qw(:Simple);
|
Dependiendo de la lista que decidas cargar son las funciones que tendrás disponibles. Ahora, puedes optar por cargar varias listas a la vez:
| Código: |
use MiModulo qw(:DEFAULT :Simple :Otro);
|
En el siguiente link puedes encontrar información más detallada de todo lo que aquí pongo, así como más opciones:
http://perldoc.perl.org/Exporter.html#How-to-Export
Saludos |
|

Dom Ago 13, 2006 6:53 pm
|
 |
danimera
Perlero Adicto

|
Registrado: 23 Jun 2005
Mensajes: 244
Ubicación: Colombia
|
|
|
|
|
Asi de sencillo es este cuento, es decir que despues de cargar el modulo puedo llamar la funcion comun y corriente.
Gracias por colaborarme veo que no es tan complicado, bueno con esta explicacion puedo ver el funciomiento real de esto |
|
Powered by phpBB © 2001, 2005 phpBB Group
|