此函数将变量绑定到一个包类,该类将为该变量提供实现。VARIABLE 是要进行魔术操作的变量的名称。CLASSNAME 是实现正确类型的对象的类的名称。任何其他参数都会传递给类的相应构造函数方法(即 TIESCALAR
、TIEHANDLE
、TIEARRAY
或 TIEHASH
)。通常,这些参数可能传递给 C 的 dbm_open(3) 函数。构造函数返回的对象也由 tie
函数返回,如果你想访问 CLASSNAME 中的其他方法,这将很有用。
请注意,当在大型对象(如 DBM 文件)上使用时,诸如 keys
和 values
等函数可能会返回巨大的列表。你可能更愿意使用 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
并非所有上面列出的方法都需要实现。请参阅 perltie、Tie::Hash、Tie::Array、Tie::Scalar 和 Tie::Handle。
与 dbmopen
不同,tie
函数不会为您 use
或 require
模块;您需要自己明确地执行此操作。请参阅 DB_File 或 Config 模块以了解有趣的 tie
实现。