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 -