13.07.2015 Views

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

如 果 你 现 在 觉 得 “ 重 载 ” 了 , 下 一 章 可 能 会 把 这 些 东 西 给 你 约 束 回 来 。第 十 三 章 捆 绑 (tie) 变 量 上有 些 人 类 的 工 作 需 要 伪 装 起 来 。 有 时 候 伪 装 的 目 的 是 欺 骗 , 但 更 多 的 时 候 , 伪 装 的 目 的是 为 了 在 更 深 层 次 做 一 些 真 实 的 通 讯 。 比 如 , 许 多 面 试 官 希 望 你 能 穿 西 服 打 领 带 以 表 示 你 对工 作 是 认 真 的 , 即 使 你 们 俩 都 知 道 你 可 能 在 工 作 的 时 候 永 远 不 会 打 领 带 。 你 思 考 这 件 事 的 时候 可 能 会 觉 得 很 奇 怪 : 在 你 脖 子 上 系 一 块 布 会 神 奇 地 帮 你 找 到 工 作 。 在 <strong>Perl</strong> 文 化 里 , tie操 作 符 起 到 类 似 的 作 用 的 角 色 : 它 让 你 创 建 一 个 看 起 来 象 普 通 变 量 的 变 量 , 但 是 在 变 量 的 伪装 后 面 , 它 实 际 上 是 一 个 羽 翼 丰 满 的 <strong>Perl</strong> 对 象 , 而 且 此 对 象 有 着 自 己 有 趣 的 个 性 。 它 只 是一 个 让 人 有 点 奇 怪 的 小 魔 术 , 就 好 象 从 一 个 帽 子 里 弹 出 一 个 邦 尼 兔 那 样 。( 译 注 : 英 文 tie做 动 词 有 " 捆 绑 " 之 意 , 而 做 名 词 有 " 领 带 " 之 意 .) 用 另 外 一 个 方 法 来 看 , 在 变 量 名 前 面 的 趣味 字 符 $,@,%, 或 者 * 告 诉 <strong>Perl</strong> 和 它 的 程 序 许 多 事 情 —— 他 们 每 个 都 暗 示 了 一 个 特殊 范 畴 的 原 形 特 性 。 你 可 以 利 用 tie 用 各 种 方 法 封 装 那 些 特 性 , 方 法 是 用 一 个 实 现 一 套 新性 质 的 类 与 该 变 量 关 联 起 来 。 比 如 , 你 可 以 创 建 一 个 普 通 的 <strong>Perl</strong> 散 列 , 然 后 把 它 tie ( 绑 )到 到 一 个 类 上 , 这 个 类 把 这 个 散 列 放 到 一 个 数 据 库 里 , 所 以 当 你 从 散 列 读 取 数 据 的 时 候 ,<strong>Perl</strong> 魔 术 般 地 从 一 个 外 部 数 据 库 文 件 抓 取 数 据 , 而 当 你 设 置 散 列 中 的 数 值 的 时 候 ,<strong>Perl</strong> 又神 奇 地 把 数 据 存 储 到 外 部 数 据 库 文 件 里 。 这 里 的 " 魔 术 "," 神 奇 " 指 的 是 “ 透 明 地 处 理 一 些 非常 复 杂 的 任 务 ”。 你 应 该 听 过 那 些 老 话 : 再 先 进 的 技 术 也 和 <strong>Perl</strong> 脚 本 没 什 么 区 别 。( 严 肃地 说 , 那 些 在 <strong>Perl</strong> 内 部 工 作 的 人 们 把 魔 术 (magic) 一 词 当 作 一 个 技 术 术 语 , 特 指 任 何 附加 在 变 量 上 的 额 外 的 语 义 , 比 如 %ENV 或 者 %SIG。 捆 绑 变 量 只 是 其 中 一 种 扩 展 。)<strong>Perl</strong> 已 经 有 内 建 的 dbmopen 和 dbmclose 函 数 , 它 们 可 以 完 成 把 散 列 变 量 和 数 据 库 系在 一 起 的 魔 术 , 不 过 那 些 函 数 的 实 现 是 早 在 <strong>Perl</strong> 没 有 tie 的 时 候 。 现 在 tie 提 供 了 更 通用 的 机 制 。 实 际 上 , <strong>Perl</strong> 本 身 就 是 以 tie 的 机 制 来 实 现 dbmopen 和 dbmclose 的 。你 可 以 把 一 个 标 量 , 数 组 , 散 列 或 者 文 件 句 柄 ( 通 过 它 的 类 型 团 ) 系 到 任 意 一 个 类 上 , 这 个类 提 供 合 适 的 命 名 方 法 以 截 获 和 模 拟 对 这 些 对 象 的 正 常 访 问 。 那 些 方 法 的 第 一 个 是 在 进 行tie 动 作 本 身 时 调 用 的 : 使 用 一 个 变 量 总 是 调 用 一 个 构 造 器 , 如 果 这 个 构 造 器 成 功 运 行 , 则返 回 一 个 对 象 , 而 <strong>Perl</strong> 把 这 个 对 象 藏 在 一 个 你 看 不 见 的 地 方 —— 在 “ 普 通 ” 变 量 的 深 层 内部 。 你 总 是 可 以 稍 后 用 tied 函 数 在 该 普 通 变 量 上 检 索 该 对 象 :tie VARIABLE, CLASSNAME, LIST;# 把 VARIABLE 绑 定 到 CLASSNAME347

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

Saved successfully!

Ooh no, something went wrong!