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.

# 这 里 编 译 的 代 码 看 到 外 层 变 量 。local $PROGRAM_NAME = "waiter";{local $PROGRAM_NAME = "server";# 这 里 的 代 码 看 到 "server"....}# 这 里 执 行 的 代 码 再 次 看 到 "watier"通 常 只 给 our 赋 值 一 次 , 可 能 是 在 程 序 或 者 模 块 的 非 常 顶 端 的 位 置 , 或 者 是 很 少 见 地 用local 前 缀 our, 获 取 一 个 local 自 己 的 变 量 :{local our @Current_Inventory = qw(bananas);check_warehouse();# 我 们 有 香 蕉 (bananas)}4.7.4 动 态 范 围 变 量 :local在 一 个 全 局 变 量 上 使 用 local 操 作 符 的 时 候 , 在 每 次 执 行 local 的 时 候 都 给 该 全 局 量 一 个临 时 值 , 但 是 这 并 不 影 响 该 变 量 的 全 局 可 视 性 。 当 程 序 抵 达 动 态 范 围 的 末 尾 时 , 临 时 值 被 抛弃 然 后 恢 复 原 来 的 值 。 但 它 仍 然 是 一 个 全 局 变 量 , 只 是 在 执 行 那 个 块 的 时 候 碰 巧 保 存 了 一 个临 时 值 而 已 。 如 果 你 在 该 全 局 变 量 包 含 临 时 值 时 调 用 其 他 函 数 , 而 且 该 函 数 访 问 了 该 全 局 变量 , 那 么 它 看 到 的 将 是 临 时 值 , 而 不 是 初 始 值 。 换 句 话 说 , 该 函 数 处 于 你 的 动 态 范 围 , 即 使它 并 不 处 在 你 的 词 法 范 围 也 如 此 ( 注 : 这 就 是 为 什 么 有 时 候 把 词 法 范 围 叫 做 静 态 范 围 : 这 样可 以 与 动 态 范 围 相 比 并 且 突 显 它 们 的 编 译 时 决 定 性 。 不 要 把 这 个 术 语 的 用 法 和 C 或 C++里 的 static 的 用 法 混 淆 。 这 个 术 语 用 得 太 广 泛 了 , 也 是 我 们 避 免 使 用 它 的 原 因 。)如 果 你 有 个 看 起 来 象 这 样 的 local:{140

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

Saved successfully!

Ooh no, something went wrong!