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.

不 过 , 它 们 在 两 个 方 面 不 太 一 样 。 在 第 一 个 语 句 里 ,require 把 模 块 名 字 里 的 任 何 双 冒 号转 换 成 你 的 系 统 的 目 录 分 隔 符 , 就 象 use 那 样 。 第 二 种 情 况 不 做 转 换 , 强 制 你 在 文 本 上 声明 你 的 模 块 的 路 径 名 , 这 样 移 植 性 比 较 差 。 另 外 一 个 区 别 是 第 一 个 require 告 诉 编 译 器 说 ,带 有 关 于 "MODULE" 的 间 接 对 象 符 号 的 表 达 式 ( 比 如 $ob = purgre MODULE) 都 是模 块 调 用 , 而 不 是 函 数 调 用 。( 如 果 在 你 自 己 的 模 块 里 有 冲 突 的 purge 定 义 , 那 么 这 里 就有 区 别 了 。)因 为 use 声 明 和 相 关 的 no 声 明 都 隐 含 有 一 个 BEGIN 块 , 编 译 器 就 会 一 看 到 这 个 声 明就 装 载 这 个 模 块 ( 并 且 运 行 里 面 的 任 何 可 执 行 初 始 化 代 码 ), 然 后 才 编 译 剩 下 的 文 件 。 这 就是 用 法 如 何 改 变 编 译 器 的 性 质 的 方 法 , 以 及 为 什 么 模 块 可 以 声 明 一 些 子 过 程 , 这 些 子 过 程 可以 作 为 列 表 操 作 符 用 于 剩 下 的 编 译 过 程 。 如 果 你 用 require 代 替 use, 这 些 事 情 就 不 会 发生 。 使 用 require 的 唯 一 原 因 就 是 你 有 两 个 模 块 , 这 两 个 模 块 都 需 要 来 自 对 方 的 函 数 。( 我们 不 知 道 这 是 不 是 个 好 理 由 。)<strong>Perl</strong> 模 块 总 是 装 载 一 个 .pm 文 件 , 但 是 这 个 文 件 随 后 可 以 装 载 相 关 的 文 件 , 比 如 动 态 链接 的 C 或 C++ 库 或 者 自 动 装 载 的 <strong>Perl</strong> 子 过 程 定 义 。 如 果 是 这 样 , 那 么 附 加 的 东 西 对 模块 用 户 而 言 是 完 全 透 明 的 。 装 载 ( 或 者 安 排 自 动 ) 任 何 附 加 的 函 数 或 功 能 的 责 任 在 .pm 文件 。 正 巧 是 POSIX 模 块 动 态 装 载 和 自 动 装 载 两 种 方 法 都 要 用 , 不 过 用 户 可 以 只 说 :use POSIX;就 可 以 获 取 所 有 输 出 了 的 函 数 和 变 量 。11.2 创 建 模 块我 们 前 面 说 过 , 一 个 模 块 可 以 有 两 个 方 法 把 它 的 接 口 提 供 给 你 的 程 序 使 用 : 把 符 号 输 出 或 者允 许 方 法 调 用 。 我 们 在 这 里 先 给 你 演 示 一 个 第 一 种 风 格 的 例 子 ; 第 二 种 风 格 用 于 面 向 对 象 的模 块 , 我 们 将 在 下 一 章 里 描 述 。( 面 向 对 象 的 模 块 应 该 不 输 出 任 何 东 西 , 因 为 方 法 最 重 要 的概 念 就 是 <strong>Perl</strong> 以 该 对 象 的 类 型 为 基 础 自 动 帮 你 找 到 方 法 自 身 。)构 造 一 个 叫 Bestiary 的 模 块 , 创 建 一 个 看 着 象 下 面 这 样 的 叫 Bestiary.pm 的 文 件 :packagerequireBestiary;Exporter;our @ISA=qw(Exporter);our @EXPORT =qw(camel); # 缺 省 输 出 的 符 号278

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

Saved successfully!

Ooh no, something went wrong!