Fonction de lien Perl

La description

Cette fonction lie la VARIABLE à la classe de package CLASSNAME qui fournit l'implémentation pour le type de variable. Tous les arguments supplémentaires dans LIST sont transmis au constructeur pour la classe entière. Généralement utilisé pour lier des variables de hachage aux bases de données DBM.

Syntaxe

Voici la syntaxe simple de cette fonction -

tie VARIABLE, CLASSNAME, LIST

Valeur de retour

Cette fonction renvoie une référence à un objet lié.

Exemple

Voici l'exemple de code montrant son utilisation de base, nous n'avons que deux fichiers dans le répertoire / 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.

Lorsque le code ci-dessus est exécuté, il produit le résultat suivant -

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

Lorsque la fonction tie est appelée, ce qui se passe réellement est que la méthode TIESCALAR de FileOwner est appelée, en passant «.bash_profile» comme argument à la méthode. Cela renvoie un objet, qui est associé par lien à la variable $ profile.

Lorsque $ profile est utilisé dans les instructions d'impression, la méthode FETCH est appelée. Lorsque vous affectez une valeur à $ profile, la méthode STORE est appelée, avec 'mcslp' comme argument de la méthode. Si vous pouvez suivre ceci, vous pouvez créer des scalaires, des tableaux et des hachages liés, car ils suivent tous le même modèle de base. Examinons maintenant les détails de notre nouvelle classe FileOwner, en commençant par la méthode TIESCALAR -