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.

然 后 我 们 进 行 各 个 检 查 。 第 一 个 要 确 保 声 明 的 属 性 名 存 在 :croak "No valid field '$field' in object"unless exists $data->{$field};下 面 这 条 语 句 只 允 许 来 自 同 一 个 文 件 的 调 用 :carp "Unmediated access denied to foreign file"unless $cfiled eq __FILE__;下 面 这 条 语 句 只 允 许 来 自 同 一 个 包 的 调 用 :carp "Unmediated access denied to foreign package ${cpack}::"unless $cpack eq __PACKAGE__;所 有 这 些 代 码 都 只 检 查 未 经 中 介 的 访 问 。 那 些 有 礼 貌 地 使 用 该 类 指 定 的 方 法 访 问 的 用 户 不 会受 到 这 些 约 束 。<strong>Perl</strong> 会 给 你 一 些 工 具 , 让 你 想 多 挑 剔 就 有 多 挑 剔 。 幸 运 的 是 , 不 是 所 有 人都 这 样 。不 过 有 些 人 应 该 挑 剔 。 当 你 写 飞 行 控 制 软 件 的 时 候 , 严 格 些 就 是 正 确 的 了 。 如 果 你 想 成 为 或者 要 成 为 这 些 人 员 , 而 且 你 喜 欢 使 用 能 干 活 的 代 码 而 不 是 自 己 重 新 发 明 所 有 东 西 , 那 么 请 看看 CPAN 上 Damian Conway 的 Tie::SecureHash 模 块 。 它 实 现 了 严 格 的 散 列 , 支持 公 有 , 保 护 和 私 有 约 束 。 它 还 对 付 我 们 前 面 的 例 子 中 忽 略 掉 的 继 承 性 问 题 。Damian 甚至 还 写 了 一 个 更 雄 心 勃 勃 的 模 块 ,Class::Contract, 在 <strong>Perl</strong> 灵 活 的 对 象 系 统 上 强 加 了 一层 正 式 的 软 件 工 程 层 。 这 个 模 块 的 特 性 列 表 看 起 来 就 象 一 本 计 算 机 科 学 教 授 的 软 件 工 程 课 本的 目 录 ,( 注 : 你 知 道 Damian 是 干 什 么 的 吗 ? 顺 便 说 一 句 , 我 们 非 常 建 议 你 看 看 他 的 书 ,Object Oriented <strong>Perl</strong>( 面 向 对 象 的 <strong>Perl</strong>)(Manning Publications, 1999))。 包 括 强制 封 装 , 静 态 继 承 和 用 于 面 向 对 象 的 <strong>Perl</strong> 的 按 需 设 计 条 件 检 查 , 以 及 一 些 用 于 对 象 和 类 层次 的 属 性 , 方 法 , 构 造 器 和 析 构 器 定 义 的 的 可 声 明 的 语 法 , 以 及 前 提 , 后 记 和 类 固 定 。 天 !12.7.6 新 技 巧到 了 <strong>Perl</strong> 5.6, 你 还 可 以 声 明 一 个 方 法 并 指 出 它 是 返 回 左 值 的 。 这 些 是 通 过 做 值 子 过 程 属性 实 现 的 ( 不 要 和 对 象 方 法 混 淆 了 )。 这 个 实 验 性 的 特 性 允 许 你 把 该 方 法 当 作 某 些 可 以 在 一个 等 号 左 边 出 现 的 东 西 :package Critter;324

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

Saved successfully!

Ooh no, something went wrong!