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.

捆 绑 是 对 变 量 进 行 的 , 而 不 是 数 值 , 因 此 一 个 变 量 的 捆 绑 属 性 不 会 随 着 赋 值 一 起 传 递 。 比 如 ,假 设 你 拷 贝 一 个 已 经 捆 绑 了 的 变 量 :$dromedary = $camel;<strong>Perl</strong> 不 是 象 平 常 那 样 从 $camel 标 量 里 读 取 变 量 , 而 是 在 相 关 的 下 层 对 象 上 调 用 FETCH方 法 。 就 好 象 你 写 的 是 这 样 的 东 西 :$dromedary = (tied $camel)->FETCH();或 者 如 果 你 还 记 得 tie 返 回 的 对 象 , 你 可 以 直 接 使 用 那 个 引 用 , 就 象 在 下 面 的 例 子 代 码 里一 样 :$clot = tie $camel, "ScalarFile", "/tmp/camle.lot";$dromedary = $camle;# 通 过 隐 含 的 接 口$dromedary = $clot->FETCH();# 一 样 的 东 西 , 不 过 是 明 确 的 方 法 而 已如 果 除 了 TIESCALAR,FETCH,STORE, 和 DESTROY 以 外 , 该 类 还 提 供 其 他 方 法 ,你 也 可 以 使 用 $clot 手 工 调 用 它 们 。 不 过 , 大 家 应 该 做 好 自 己 的 事 情 而 不 要 去 管 下 层 对 象 ,这 也 是 为 什 么 你 看 到 来 自 tie 的 返 回 值 常 被 忽 略 。 如 果 稍 后 你 又 需 要 该 对 象 ( 比 如 , 如 果该 类 碰 巧 记 载 了 任 何 你 需 要 的 额 外 方 法 的 文 档 ), 那 么 你 仍 然 可 以 通 过 tie 获 取 该 对 象 。忽 略 所 返 回 的 对 象 同 样 也 消 除 了 某 些 类 型 的 错 误 , 这 一 点 我 们 稍 后 介 绍 。下 面 是 我 们 的 类 所 需 要 的 东 西 , 我 们 将 把 它 们 放 到 ScalarFile ? .pm:package ScalarFile;use Carp; # 很 好 地 传 播 错 误 消 息 。use strict; # 给 我 们 自 己 制 定 一 些 纪 律 。use warnings; # 打 开 词 法 范 围 警 告 。use warnings::register;# 允 许 拥 护 说 "use warnings 'ScalarFile'"。my $count = 0; # 捆 绑 了 的 ScalarFile ?的 内 部 计 数 。这 个 标 准 的 Carp 模 块 输 出 carp,croak, 和 confess 子 过 程 , 我 们 将 在 本 节 稍 后 的 代码 中 使 用 它 们 。 和 往 常 一 样 , 参 阅 第 32 章 , 标 准 模 块 , 或 者 在 线 文 档 获 取 Carp 的 更 多介 绍 。下 面 的 方 法 是 该 类 定 义 的 。351

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

Saved successfully!

Ooh no, something went wrong!