13.07.2015 Views

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

第 十 四 章 捆 绑 (tie) 变 量 下14.3 捆 绑 散 列一 个 实 现 捆 绑 散 列 的 类 应 该 定 义 八 个 方 法 。TIEHASH 构 造 一 个 新 对 象 。FETCH 和STORE 访 问 键 字 / 数 值 对 。EXISTS 报 告 某 键 字 是 否 存 在 于 散 列 中 , 而 DELETE 删 除 一个 键 字 和 它 关 联 的 数 值 ( 注 : 请 注 意 在 <strong>Perl</strong> 里 , 散 列 里 不 存 在 一 个 键 字 与 存 在 一 个 键 字 但是 其 对 应 数 值 为 undef 是 不 同 的 两 种 情 况 。 这 两 种 情 况 可 以 分 别 用 exists 和 defined测 试 。) CLEAR 通 过 删 除 所 有 键 字 / 数 值 对 清 空 散 列 。FIRSTKEY 和 NEXTKEY 在 你 调用 keys, values, 或 each 的 时 候 逐 一 遍 历 键 字 / 数 值 对 。 还 有 就 是 和 往 常 一 样 , 如 果你 想 在 对 象 删 除 的 时 候 执 行 某 种 特 定 的 动 作 , 那 么 你 可 能 还 要 定 义 DESTORY 方 法 。( 如果 你 觉 得 方 法 太 多 , 那 么 你 肯 定 没 有 认 真 阅 读 上 一 节 关 于 数 组 的 内 容 。 不 管 怎 样 , 你 都 可 以自 由 地 从 标 准 的 Tie::Hash 模 块 继 承 缺 省 的 方 法 , 只 用 重 新 定 义 你 感 兴 趣 的 方 法 。 同 样 ,Tie::StdHash 假 设 此 实 现 同 样 也 是 一 个 散 列 。)比 如 , 假 定 你 想 创 建 这 么 一 个 散 列 : 每 次 你 给 一 个 键 字 赋 值 的 时 候 , 它 不 是 覆 盖 掉 原 来 的 内容 , 而 是 把 新 数 值 附 加 到 一 个 数 值 数 组 上 。 这 样 当 你 说 :$h{$k} = "one";$h{$k} = "two";它 实 际 上 干 的 是 :push @{ $h{$k} }, "one";push @{ $h{$k} }, "two";这 个 玩 叶 儿 不 算 什 么 复 杂 的 主 意 , 所 以 你 应 该 能 用 一 个 挺 简 单 的 模 块 实 现 。 把Tie::StdHash 用 做 基 类 , 下 面 就 是 干 这 事 的 Tie::AppendHash:package Tie::AppendHash;use Tie::Hash;our @ISA = ("Tie::StdHash");sub STORE {367

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!