tie
)
el acceso a la variable es gobernado por los métodos en el paquete. Por ejemplo, para una
variable escalar escribiríamos:
tie $var, "Package::Name";Los métodos dentro del paquete deben tener nombres especiales:
TIESCALAR
, FETCH
, STORE
y DESTROY
.
El método TIESCALAR es invocado cuando se llama a la función tie .
Se le pasan los mismos argumentos que se hayan pasado a la función tie
, excepto
por la variable en cuestión $var
. Así, la llamada anterior se traduce en una
llamada a Package::Name->TIESCALAR()
. Si, por ejemplo atamos una variable
con:
tie $var, "Package::Name", $arg1, $arg2, $arg3Los argumentos adicionales se pasan a
TIESCALAR
, produciendo la llamada:
Package::Name->TIESCALAR($arg1, $arg2, $arg3)La tarea de
TIESCALAR
es crear un nuevo objeto de la clase apropiada y devolver
una referencia al mismo. El objeto implementa el estado interno de la variable original.
El método FETCH se llama siempre que se lee el valor de la variable. Se le pasa
como único argumento una referencia al objeto que implementa la variable (el que fué
creado por el constructor TIESCALAR
). El valor devuelto por FETCH
se usa como
valor de la variable.
La subrutina STORE se llama siempre que se actualiza el valor de $var
. Se le pasan
dos argumentos: la referencia al objeto que implementa la variable y el nuevo valor a almacenar.
No devuelve valor alguno.
El destructor, DESTROY , es llamado cuando $var
desaparece (técnicamente, cuando
el contador de referencias a $var
que internamente lleva Perl alcanza cero). No suele ser
necesaria, pero puede ser usada para realizar las labores de limpieza que la implementación
requiera. El destructor es llamado también cuando se rompe explicitamente la atadura o compromiso
usando la función untie:
untie $var;