tie VARIABLE,CLASSNAME,LIST

此函数将变量绑定到一个包类,该类将为该变量提供实现。VARIABLE 是要进行魔术操作的变量的名称。CLASSNAME 是实现正确类型的对象的类的名称。任何其他参数都会传递给类的相应构造函数方法(即 TIESCALARTIEHANDLETIEARRAYTIEHASH)。通常,这些参数可能传递给 C 的 dbm_open(3) 函数。构造函数返回的对象也由 tie 函数返回,如果你想访问 CLASSNAME 中的其他方法,这将很有用。

请注意,当在大型对象(如 DBM 文件)上使用时,诸如 keysvalues 等函数可能会返回巨大的列表。你可能更愿意使用 each 函数来迭代此类对象。示例

# print out history file offsets
use NDBM_File;
tie(my %HIST, 'NDBM_File', '/usr/lib/news/history', 1, 0);
while (my ($key,$val) = each %HIST) {
    print $key, ' = ', unpack('L', $val), "\n";
}

实现哈希的类应具有以下方法

TIEHASH classname, LIST
FETCH this, key
STORE this, key, value
DELETE this, key
CLEAR this
EXISTS this, key
FIRSTKEY this
NEXTKEY this, lastkey
SCALAR this
DESTROY this
UNTIE this

实现普通数组的类应具有以下方法

TIEARRAY classname, LIST
FETCH this, key
STORE this, key, value
FETCHSIZE this
STORESIZE this, count
CLEAR this
PUSH this, LIST
POP this
SHIFT this
UNSHIFT this, LIST
SPLICE this, offset, length, LIST
EXTEND this, count
DELETE this, key
EXISTS this, key
DESTROY this
UNTIE this

实现文件句柄的类应具有以下方法

TIEHANDLE classname, LIST
READ this, scalar, length, offset
READLINE this
GETC this
WRITE this, scalar, length, offset
PRINT this, LIST
PRINTF this, format, LIST
BINMODE this
EOF this
FILENO this
SEEK this, position, whence
TELL this
OPEN this, mode, LIST
CLOSE this
DESTROY this
UNTIE this

实现标量的类应具有以下方法

TIESCALAR classname, LIST
FETCH this,
STORE this, value
DESTROY this
UNTIE this

并非所有上面列出的方法都需要实现。请参阅 perltieTie::HashTie::ArrayTie::ScalarTie::Handle

dbmopen 不同,tie 函数不会为您 userequire 模块;您需要自己明确地执行此操作。请参阅 DB_FileConfig 模块以了解有趣的 tie 实现。

有关更多详细信息,请参阅 perltietied