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.

甚 至 英 语 在 这 方 面 也 有 类 似 的 问 题 。 看 看 下 面 的 句 子 : “Throw your cat out the windowa toy mouse to play with.” 如 果 你 分 析 这 句 话 速 度 太 快 , 你 最 后 就 会 把 猫 仍 出 去 , 而 不是 耗 子 ( 除 非 你 意 识 到 猫 已 经 在 窗 户 外 边 了 )。 类 似 <strong>Perl</strong>, 英 语 也 有 两 种 不 同 的 方 法 来 表达 这 个 代 理 :“Throw your cat the mouse” 和 “ Throw the mouse to your cat.” 有 时候 长 一 点 的 形 式 比 较 清 晰 并 且 更 自 然 , 但 是 有 时 侯 短 的 好 。 至 少 在 <strong>Perl</strong> 里 , 我 们 要 求 你 在任 何 编 译 为 间 接 对 象 的 周 围 放 上 花 括 弧 。12.3.4 引 用 包 的 类间 接 对 象 风 格 的 方 法 调 用 最 后 还 有 一 种 可 能 的 混 淆 , 那 就 是 它 可 能 完 全 不 会 被 当 作 一 个 方 法调 用 而 分 析 , 因 为 当 前 包 可 能 有 一 个 和 方 法 同 名 的 子 过 程 。 当 用 一 个 类 方 法 和 一 个 文 本 包 名字 一 起 做 调 用 者 用 的 时 候 , 有 一 个 方 法 可 以 解 析 这 样 的 混 淆 , 而 同 时 仍 然 保 持 间 接 对 象 的 语法 : 通 过 在 包 后 面 附 加 两 个 冒 号 引 用 类 名 。$obj = method CLASS::;# 强 制 为 "CLASS"->method这 个 方 法 很 重 要 , 因 为 经 常 看 到 下 面 的 表 示 法 :$obj = new CLASS;# 不 会 分 析 为 方 法如 果 当 前 包 有 一 个 子 过 程 叫 new 或 者 CLASS 时 , 将 不 能 保 证 总 是 表 现 得 正 确 。 即 使 你很 仔 细 地 使 用 箭 头 形 式 而 不 是 间 接 对 象 形 式 调 用 方 法 , 也 有 极 小 可 能 会 有 问 题 。 虽 然 引 入 了额 外 标 点 的 杂 音 , 但 CLASS:: 表 示 法 却 能 保 证 <strong>Perl</strong> 正 确 分 析 你 的 方 法 调 用 。 下 面 例 子中 前 面 两 个 不 总 是 分 析 成 一 样 的 东 西 , 但 后 面 两 个 可 以 :$obj = new ElvenRing;# 可 以 是 new("ElvenRing")# 甚 至 是 new(ElvenRing())$obj = ElvenRing->new;# 可 以 是 ElvenRing()->new()$obj = new ElvenRing::;$obj = ElvenRing::->new;# 总 是 "ElvenRing"->new()# 总 是 "ElvenRing"->new()包 引 用 表 示 法 可 以 用 一 些 富 有 创 造 性 的 对 齐 写 得 更 好 看 :$obj = new ElvenRing::name => "Narya",292

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

Saved successfully!

Ooh no, something went wrong!