Re: [Perl] módulos

Gunnar Wolf gwolf en gwolf.cx
Mar Jun 8 13:14:36 CDT 2004


John Robeto dijo [Tue, Jun 08, 2004 at 05:40:20PM +0200]:
> Hola a todos.
> Estoy construyendo una biblioteca en Perl, qué debo
> hacer para traer a mi script el valor de una variable
> almacenada en un módulo para poder seguir tratándola
> en el script, es posible?

Hola,

A la hora de compilar las diferentes partes de tu código (tu programa
principal y tus diversos módulos), cada módulo reside únicamente en su
espacio de nombres. Típicamente verás al inicio de cada módulo
(digamos, Mod.pm) la directiva 'package Mod;'. Esto le indica a Perl
que a partir de ahí, el espacio de nombres es Mod. ¿Qué significa? Que
si en tu módulo tienes una variable global $var (declarada con 'our
$var' o, si no usas 'strict', no declarada), desde cualquier otro
módulo podrás referirte a ella como $Mod::var. Va lo mismo para los
demás tipos de datos:

Tipo	    Nombre    Desde el módulo	Desde fuera
Escalar     $var      $var		$Mod::var
Arreglo     @arr      @arr		@mod::arr
Hash        %hash     %hash		%mod::hash
Función	    func      func(), &func()	Mod::func(), &mod::func()

Ahora bien, para las variables léxicas (las declaradas con my, lo que
debe significar prácticamente todas :) ), no podrán ser vistas fuera
del bloque o archivo donde fueron declaradas, ya que no tienen una
entrada en la tabla de símbolos general.

Saludos,

-- 
Gunnar Wolf - gwolf en gwolf.cx - (+52-55)5630-9700 ext. 1366
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973  F800 D80E F35A 8BB5 27AF


Más información sobre la lista de distribución Perl