Página 1 de 1

Definir variables globales

NotaPublicado: 2015-04-29 06:36 @317
por silva
Agradecería si me pudiesen explicar cómo defino variables globales en un paquete, para que luego las pueda utilizar en otro.

Necesitaría:

1- Definir variables globales en un paquete X.
2- Asignarle valores dentro del paquete X.
3- Acceder desde otro paquete XX al valor de dichas variables.

¡Gracias!

Re: Definir variables globales

NotaPublicado: 2015-04-29 12:08 @547
por explorer
No es recomendable hacerlo (es mejor usar una encapsulación de los datos), pero... se puede hacer. Y de varias formas.

Esta es la más inmediata:
Sintáxis: (varglobal.pl) [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/env perl
  2. use Modulo;                     # "usamos" el módulo Modulo.pm
  3.  
  4. print $Modulo::var_global;      # accedemos a una de sus variables globales
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Sintáxis: (Modulo.pm) [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/env perl
  2. package Modulo;
  3. our $var_global = 42;
  4. 1;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Como ves, se trata de poner la jerarquía completa para acceder a las variables declaradas con our(). Tienes más información en perldoc -f our

Hay una forma de evitarlo, y es usando el módulo Exporter. En perlmod.pod, en la sección Módulos Perl, tienes una plantilla para crear un módulo. Verás ahí como declarar variables y funciones locales y globales, y que sean conocidas desde el exterior.

Otra forma sería hacer que el módulo no fuera un package, sino un trozo de código Perl normal. Entonces, en el programa principal, lo leemos con un simple do 'modulo.pl'; y ya tendríamos incorporado a nuestro programa las variables declaradas y definidas en modulo.pl.

Hay más formas...

Re: Definir variables globales

NotaPublicado: 2015-04-29 19:37 @859
por silva
¡¡¡Excelente!!! ¡Gracias!