Función perl tie

Descripción

Esta función vincula la VARIABLE a la clase de paquete CLASSNAME que proporciona implementación para el tipo de variable. Cualquier argumento adicional en LIST se pasa al constructor para toda la clase. Normalmente se utiliza para vincular variables hash a bases de datos DBM.

Sintaxis

A continuación se muestra la sintaxis simple para esta función:

tie VARIABLE, CLASSNAME, LIST

Valor devuelto

Esta función devuelve una referencia a un objeto vinculado.

Ejemplo

A continuación se muestra el código de ejemplo que muestra su uso básico, solo tenemos dos archivos en el directorio / tmp:

#!/usr/bin/perl -w

package MyArray;

sub TIEARRAY {
   print "TYING\n";
   bless [];
}

sub DESTROY {
   print "DESTROYING\n";
}

sub STORE {
   my ($self, $index, $value ) = @_;
   print "STORING $value at index $index\n";
   $self[$index] = $value;
}

sub FETCH {
   my ($self, $index ) = @_;
   print "FETCHING the value at index $index\n";
   return $self[$index];
}

package main;
$object = tie @x, MyArray; #@x is now a MyArray array;

print "object is a ", ref($object), "\n";

$x[0] = 'This is test'; #this will call STORE();
print $x[0], "\n";      #this will call FETCH();
print $object->FETCH(0), "\n";
untie @x    		#now @x is a normal array again.

Cuando se ejecuta el código anterior, produce el siguiente resultado:

TYING
object is a MyArray
STORING This is test at index 0
FETCHING the value at index 0
This is test
FETCHING the value at index 0
This is test
DESTROYING

Cuando se llama a la función tie, lo que realmente sucede es que se llama al método TIESCALAR de FileOwner, pasando '.bash_profile' como argumento al método. Esto devuelve un objeto, que está asociado por vínculo con la variable $ profile.

Cuando se usa $ profile en las declaraciones de impresión, se llama al método FETCH. Cuando asigna un valor a $ profile, se llama al método STORE, con 'mcslp' como argumento del método. Si puede seguir esto, puede crear escalares, matrices y hashes vinculados, ya que todos siguen el mismo modelo básico. Ahora examinemos los detalles de nuestra nueva clase FileOwner, comenzando con el método TIESCALAR -