示例
以下是显示其基本用法的示例代码,/ tmp目录中只有两个文件--
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.
执行以上代码后,将产生以下结果-
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
调用tie函数时,实际发生的是调用了FileOwner中的TIESCALAR方法,并将“ .bash_profile”作为该方法的参数传递。这将返回一个对象,该对象通过绑定到$ profile变量来关联。当在打印语句中使用$ profile时,将调用FETCH方法。当您为$ profile分配值时,将调用STORE方法,并以'mcslp'作为该方法的参数。如果可以遵循,则可以创建绑定的标量,数组和哈希,因为它们都遵循相同的基本模型。现在让我们从TIESCALAR方法开始检查新FileOwner类的详细信息-