Un ejemplo muy pequeño.
pm1.pm:
Using perl Syntax Highlighting
# Primer módulo
use strict
;
package pm1
;
our $i = "Hola\n";Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4
pm2.pm:
Using perl Syntax Highlighting
# Segundo módulo
use strict
;
package pm2
;
use pm1
;
print $pm1::i;Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Ejecutando con
perl ./pm2.pm tenemos la salida que esperamos:
Hola.
Explicación:
* El uso de
use strict; es siempre recomendable, para ayudar a identificar problemas. Pero es opcional, claro.
* En el pm1, con package indicamos que todo lo que sigue está en ese "espacio de nombres" (quiere decir que todas las variables tendrán un
pm1:: delante de ellas).
* Declaramos nuestra variable $i como global, con la ayuda de
our. No podemos declararlo con
my porque entonces sería local a nuestro paquete. Si no existiera el 'strict' podríamos quitar el 'our' porque entonces estaríamos declarando igualmente una variable global. Otra forma de hacerlo es usando
use vars qw{ $i };.
* En pm2 incluimos las variables de pm1 con el 'use'.
* Pintamos el valor de la variable $i que está en el paquete pm1:
$pm1::i.
Esto es lo básico, pero como es mucho rollo el poner el nombre del módulo primero delante de todas sus variables, casi todo el mundo suele usar el módulo
Exporter para ayudar a importar las variables de un módulo en el espacio de nombres del otro, y así, dar la sensación de que están todas en el mismo módulo.
Más información en el capítulo 12 de Perl Cookbook.