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.

Exporter 提 供 缺 省 的 export_fail 方 法 , 它 只 是 简 单 地 不 加 改 变 地 返 回 该 列 表 并 且 令use 失 败 , 同 时 给 每 个 符 号 产 生 一 个 例 外 。 如 果 export_fail 返 回 一 个 空 列 表 , 那 么 就 不会 记 录 任 何 错 误 并 且 输 出 所 有 请 求 的 符 号 。11.2.1.4 标 签 绑 定 工 具 函 数因 为 在 %EXPORT_TAGS 里 列 出 的 符 号 必 须 同 时 在 @EXPORT 或 者 @EXPORT_OK里 面 出 现 , 所 以 Exporter 提 供 了 两 个 函 数 让 你 可 以 增 加 这 些 标 签 或 者 符 号 :%EXPORTER_TAGS = (foo => [qw(aa bb cc)], bar => [qw(aa cc dd)]);Exporter::export_tags('foo');Exporter::export_ok_tags('bar');# 把 aa,bb 和 cc 加 到 @EXPORT# 把 aa,cc 和 dd 加 到 @EXPORT_OK声 明 非 标 签 名 字 是 错 误 的 。11.3 覆 盖 内 建 的 函 数许 多 内 建 的 函 数 都 可 以 覆 盖 , 尽 管 ( 就 象 在 你 的 墙 里 面 打 洞 一 样 ) 你 应 该 只 是 偶 然 才 做 这 些事 情 并 且 只 有 必 要 时 才 这 么 做 。 通 常 , 那 些 试 图 在 一 个 非 Unix 系 统 上 仿 真 一 些 Unix 系统 的 功 能 的 包 要 这 种 用 法 。( 不 要 把 覆 盖 和 重 载 两 个 概 念 混 淆 了 , 重 载 给 内 建 的 操 作 符 增 加了 面 向 对 象 的 含 义 , 但 并 不 覆 盖 什 么 东 西 。 参 阅 第 十 三 章 里 的 重 载 模 块 的 讨 论 , 重 载 , 获 取更 多 信 息 。)我 们 可 以 通 过 从 一 个 模 块 里 输 入 名 字 来 实 现 重 载 —— 预 定 义 的 不 够 好 。 更 准 确 地 说 , 触 发 覆盖 的 是 对 一 个 指 向 类 型 团 的 代 码 引 用 的 赋 值 动 作 , 就 象 *open = \&myopen 里 一 样 。 另外 , 赋 值 必 须 出 现 在 其 他 的 包 里 ; 这 样 就 不 大 可 能 通 过 故 意 的 类 型 团 别 名 导 致 偶 然 的 覆 盖 。不 过 , 如 果 你 真 的 是 希 望 做 你 自 己 的 覆 盖 , 那 也 别 失 望 , 因 为 subs 用 法 令 你 通 过 输 入 语法 预 定 义 子 过 程 , 这 样 , 这 些 名 字 就 覆 盖 了 内 建 的 名 字 :use subs qw(chdir chroot chmod chown);chdir $somewhere;sub chdir {...}通 常 , 模 块 不 应 该 把 open 或 chdir 这 样 的 内 建 的 名 字 放 在 缺 省 的 @EXPORT 列 表 里 输出 , 因 为 这 些 名 字 可 能 会 不 知 不 觉 地 跑 到 别 人 的 名 字 空 间 里 , 并 且 在 人 们 不 知 情 的 情 况 下 把283

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

Saved successfully!

Ooh no, something went wrong!