Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Creación de módulo

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto
Mensaje Dom Ago 13, 2006 1:15 am
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 244
Ubicación: Colombia
Creación de módulo Responder citando

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)]);
Mensaje Dom Ago 13, 2006 6:12 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4212
Ubicación: Valladolid, España
Responder citando

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.
Mensaje Dom Ago 13, 2006 11:17 am
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1390
Ubicación: México
Responder citando

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
Mensaje Dom Ago 13, 2006 6:53 pm
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 244
Ubicación: Colombia
Responder citando

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
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group