• Publicidad

Visibilidad de variables desde otro módulo

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Visibilidad de variables desde otro módulo

Notapor fgalves » 2007-04-02 10:59 @499

Hola a todos,

El caso es que necesito acceder desde un módulo Perl (pm1) a una variable que se encuentra definida en otro módulo Perl (pm2).
El segundo módulo Perl (pm2) hace uso del primero:
use pm1;

¿Cómo puedo tener acceso a las variables definidas en pm1?
Lo he intentado con pm1::nombre_variable; pero el intérprete se queja.

¿Alguien me puede echar una mano?
¡¡Muchas gracias!!
¡Saludos!
Felipe
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Publicidad

Notapor explorer » 2007-04-02 14:06 @629

Un ejemplo muy pequeño.

pm1.pm:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
# Primer módulo
use strict;

package pm1;

our $i = "Hola\n";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

pm2.pm:
Sintáxis: [ Descargar ] [ Ocultar ]
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.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 51 invitados

cron