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.

最 常 见 的 声 明 形 式 是 my, 它 定 义 词 法 范 围 的 变 量 ; 这 些 变 量 的 名 字 和 值 都 存 储 在 当 前 范围 的 临 时 中 间 变 量 暂 存 器 里 , 而 且 不 能 全 局 访 问 。 与 之 相 近 的 是 our 声 明 , 它 在 当 前 范 围输 入 一 个 词 法 范 围 的 名 字 , 就 象 my 一 样 , 但 是 实 际 上 却 引 用 一 个 全 局 变 量 , 任 何 人 如 果想 看 地 话 都 可 以 访 问 。 换 句 话 说 , 就 是 伪 装 成 词 汇 的 全 局 变 量 。另 外 一 种 形 式 的 范 围 , 动 态 范 围 , 应 用 于 local 变 量 , 这 种 变 量 实 际 上 是 全 局 变 量 , 除 了“local( 局 部 )” 的 字 眼 以 外 和 局 部 的 中 间 变 量 暂 存 器 没 有 任 何 关 系 。4.7.2 词 法 范 围 的 变 量 :my为 帮 助 你 摆 脱 维 护 全 局 变 量 的 痛 苦 ,<strong>Perl</strong> 提 供 了 词 法 范 围 的 变 量 , 通 常 简 称 为 词 汇 。 和 全局 变 量 不 同 , 词 汇 保 证 你 的 隐 私 。 假 如 你 没 有 分 发 这 些 私 有 变 量 的 引 用 ( 引 用 可 以 间 接 地 处理 这 些 私 有 变 量 ), 你 就 可 以 确 信 对 这 些 私 有 变 量 的 访 问 仅 限 于 你 的 程 序 里 面 的 一 个 分 离 的 ,容 易 标 识 的 代 码 段 。 这 也 是 为 什 么 我 们 使 用 关 键 字 my 的 原 因 。一 个 语 句 序 列 可 以 包 含 词 法 范 围 变 量 的 声 明 。 习 惯 上 这 样 的 声 明 放 在 语 句 序 列 的 开 头 , 但 我们 并 不 要 求 这 样 做 。 除 了 在 编 译 时 声 明 变 量 名 字 以 外 , 声 明 所 起 的 作 用 就 象 普 通 的 运 行 时 语句 : 它 们 每 一 句 都 被 仔 细 地 放 在 语 句 序 列 中 , 就 好 象 它 们 是 没 有 修 饰 词 的 普 通 语 句 一 样 :my $name = "fred";my @stuff = ("car", "house", "club");my ($vehicle, $home, $tool) = @stuff;这 些 词 法 变 量 对 它 们 所 处 的 最 近 的 闭 合 范 围 以 外 的 世 界 而 言 是 完 全 不 可 见 的 。 和 local 的动 态 范 围 效 果 ( 参 阅 下 一 节 ) 不 同 的 是 , 词 汇 对 任 何 在 它 的 范 围 内 调 用 的 子 过 程 都 是 不 可 见的 。 甚 至 相 同 的 子 过 程 调 用 自 身 或 者 从 别 处 调 用 也 如 此 —— 每 个 子 过 程 的 实 例 都 得 到 自 己 的词 法 变 量 “ 中 间 变 量 暂 存 器 ”。和 块 范 围 不 同 的 是 , 文 件 范 围 不 能 嵌 套 ; 也 没 有 “ 闭 合 ” 的 东 西 —— 至 少 没 有 文 本 上 的 闭 合 。如 果 你 用 do,require 或 者 use 从 一 个 独 立 的 文 件 装 载 代 码 , 那 么 在 那 个 文 件 里 的 代 码无 法 访 问 你 的 词 汇 , 同 样 你 也 不 能 访 问 那 个 文 件 的 词 汇 。但 是 , 任 何 一 个 文 件 内 部 的 范 围 ( 甚 至 文 件 本 身 ) 都 是 平 等 的 。 通 常 , 一 个 比 子 过 程 定 义 大一 些 的 范 围 对 你 很 有 用 , 因 为 这 样 你 就 可 以 在 有 限 的 一 个 子 过 程 集 合 里 共 享 私 有 变 量 。 这 就是 你 创 建 在 C 里 被 认 为 是 “static”( 静 态 ) 的 变 量 的 方 法 :{my $state = 0;137

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

Saved successfully!

Ooh no, something went wrong!