Funzione cravatta Perl

Descrizione

Questa funzione lega la VARIABILE alla classe del pacchetto CLASSNAME che fornisce l'implementazione per il tipo di variabile. Eventuali argomenti aggiuntivi in ​​LIST vengono passati al costruttore per l'intera classe. In genere utilizzato per associare variabili hash ai database DBM.

Sintassi

Di seguito è riportata la semplice sintassi per questa funzione:

tie VARIABLE, CLASSNAME, LIST

Valore di ritorno

Questa funzione restituisce un riferimento all'oggetto legato.

Esempio

Di seguito è riportato il codice di esempio che mostra il suo utilizzo di base, abbiamo solo due file nella directory / 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.

Quando viene eseguito il codice sopra, produce il seguente risultato:

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

Quando viene chiamata la funzione tie, ciò che effettivamente accade è che viene chiamato il metodo TIESCALAR da FileOwner, passando ".bash_profile" come argomento al metodo. Ciò restituisce un oggetto, che è associato per legame alla variabile $ profile.

Quando $ profile viene utilizzato nelle istruzioni print, viene chiamato il metodo FETCH. Quando si assegna un valore a $ profile, viene chiamato il metodo STORE, con "mcslp" come argomento del metodo. Se puoi seguire questo, puoi creare scalari, array e hash legati, poiché seguono tutti lo stesso modello di base. Ora esaminiamo i dettagli della nostra nuova classe FileOwner, a partire dal metodo TIESCALAR -