Perl tie 函数



描述

此函数将变量 VARIABLE 绑定到提供变量类型实现的包类 CLASSNAME。LIST 中的任何其他参数都将传递给整个类的构造函数。通常用于将哈希变量绑定到 DBM 数据库。

语法

以下是此函数的简单语法:

tie VARIABLE, CLASSNAME, LIST

返回值

此函数返回绑定对象的引用。

示例

以下是显示其基本用法的示例代码,我们在 /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.

执行以上代码后,会产生以下结果:

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' 作为参数传递给该方法。这将返回一个对象,该对象由 tie 与 $profile 变量关联。

当在 print 语句中使用 $profile 时,将调用 FETCH 方法。当您为 $profile 赋值时,将调用 STORE 方法,并将 'mcslp' 作为参数传递给该方法。如果您能理解这一点,那么您可以创建绑定的标量、数组和哈希,因为它们都遵循相同的基本模型。现在让我们检查一下我们新的 FileOwner 类的详细信息,从 TIESCALAR 方法开始:

perl_function_references.htm
广告