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.

sub myname ($);$me = myname $0|| die "can't get myname";这 样 就 会 按 照 你 想 象 的 那 样 分 析 了 , 不 过 你 还 是 应 该 养 成 在 这 种 情 况 下 用 or 的 习 惯 。 有 关原 型 的 更 多 内 容 , 参 阅 第 六 章 , 子 过 程 。有 时 候 你 的 确 需 要 定 义 子 过 程 , 否 则 你 在 运 行 时 会 收 到 一 个 错 误 , 说 你 调 用 了 一 个 没 有 定 义的 子 过 程 。 除 了 自 己 定 义 子 过 程 外 , 还 有 几 个 方 法 从 其 它 地 方 引 入 定 义 。你 可 以 用 简 单 的 require 语 句 从 其 它 文 件 装 载 定 义 , 在 <strong>Perl</strong> 4 里 , 这 是 装 载 文 件 的 最 好方 法 , 但 是 这 种 方 法 有 两 个 问 题 。 首 先 , 其 他 文 件 通 常 会 向 一 个 它 们 自 己 选 定 的 包 ( 一 个 符号 表 ) 里 插 入 子 过 程 名 , 而 不 是 向 你 的 包 里 插 。 其 次 ,require 在 运 行 时 起 作 用 , 这 对 调用 它 起 声 明 作 用 的 文 件 来 说 有 点 太 晚 了 。 不 过 , 有 时 候 你 要 的 就 是 推 迟 的 装 载 。引 入 声 明 和 定 义 的 更 好 的 办 法 是 使 用 use 声 明 , 它 可 以 在 编 译 时 就 require 各 模 块 ( 因为 use 算 做 BEGIN 块 ), 然 后 你 就 可 以 把 一 些 模 块 的 声 明 引 入 到 你 的 程 序 里 面 来 了 。 所以 可 以 把 use 看 成 某 种 类 型 的 全 局 声 明 , 因 为 它 在 编 译 时 把 名 字 输 入 到 你 自 己 的 ( 全 局 )包 里 面 , 就 好 象 你 是 自 己 声 明 的 一 样 。 参 阅 第 十 章 , 包 , 的 " 符 号 表 " 一 节 , 看 看 包 之 间 的 传输 运 做 的 低 层 机 制 ; 第 十 一 章 , 模 块 , 看 看 如 何 设 置 一 个 模 块 的 输 入 和 输 出 ; 以 及 第 十 八 章 ,看 看 BEGIN 和 它 的 表 兄 弟 CHECK,INIT, 和 END 的 解 释 。 它 们 在 某 种 程 度 上 也 是 全局 声 明 , 因 为 它 们 在 编 译 是 做 处 理 , 而 且 具 有 全 局 影 响 。4.7 范 围 声 明和 全 局 声 明 类 似 , 词 法 范 围 声 明 也 是 在 编 译 时 起 作 用 的 。 和 全 局 声 明 不 同 的 是 , 词 法 范 围 声明 的 作 用 范 围 是 从 声 明 开 始 到 闭 合 范 围 的 最 里 层 ( 块 , 文 件 , 或 者 eval-- 以 先 到 者 为 准 )。这 也 是 为 什 么 我 们 称 它 为 词 法 范 围 , 尽 管 " 文 本 范 围 " 可 能 更 准 确 些 , 因 为 词 法 范 围 这 个 词 实在 和 词 法 没 什 么 关 系 。 但 是 全 世 界 的 计 算 机 科 学 家 都 知 道 " 词 法 范 围 " 是 什 么 意 思 , 所 以 在 这里 我 们 还 是 用 这 个 词 。<strong>Perl</strong> 还 支 持 动 态 范 围 声 明 。 动 态 范 围 同 样 也 伸 展 到 最 里 层 的 闭 合 块 , 但 是 这 里 的 " 闭 合 " 是运 行 时 动 态 定 义 的 , 而 不 是 象 文 本 那 样 在 编 译 时 定 义 。 用 另 外 一 种 方 式 来 说 , 语 句 块 通 过 调用 其 他 语 句 块 实 现 动 态 地 嵌 套 , 而 不 是 通 过 包 含 其 他 语 句 块 来 实 现 嵌 套 。 这 样 的 动 态 嵌 套 可能 在 某 种 程 度 上 和 嵌 套 的 文 本 范 围 相 关 , 但 是 这 两 者 通 常 是 不 一 样 的 , 尤 其 是 在 调 用 子 过 程的 时 候 。我 们 曾 经 说 过 use 的 一 些 方 面 可 以 认 为 是 全 局 声 明 , 但 是 use 的 其 他 方 面 却 是 词 法 范 围的 。 特 别 是 ,use 不 仅 输 入 包 的 符 号 , 而 且 还 实 现 了 许 多 让 人 不 可 思 议 的 编 译 器 暗 示 , 也134

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

Saved successfully!

Ooh no, something went wrong!