13.07.2015 Views

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

和 数 字 。Unicode 象 形 文 字 也 包 括 在 内 , 不 过 我 们 可 不 建 议 你 使 用 它 们 , 除 非 你 能 够 阅 读它 们 。 参 阅 第 十 五 章 。严 格 说 来 , 跟 在 趣 味 字 符 后 面 的 名 字 一 定 是 标 识 符 。 他 们 可 以 以 数 字 开 头 , 这 时 候 后 面 只 能跟 着 更 多 数 字 , 比 如 $123。 如 果 一 个 名 字 开 头 不 是 字 母 , 数 字 或 下 划 线 , 这 样 的 名 字 ( 通常 ) 限 于 一 个 字 符 ( 比 如 $? 或 $$), 而 且 通 常 对 <strong>Perl</strong> 有 预 定 的 意 义 , 比 如 , 就 象 在Bourne shell 里 一 样 ,$$ 是 当 前 进 程 ID 而 $? 是 你 的 上 一 个 子 进 程 的 退 出 状 态 。到 了 版 本 5.6,<strong>Perl</strong> 还 有 一 套 用 于 内 部 变 量 的 可 扩 展 语 法 。 任 何 形 如 ${^NAME} 这 样的 变 量 都 是 保 留 为 <strong>Perl</strong> 使 用 的 。 所 有 这 些 非 标 识 符 名 字 都 被 强 制 存 放 于 主 符 号 表 。 参 阅 第二 十 八 章 , 特 殊 名 字 , 那 里 有 一 些 例 子 。我 们 容 易 认 为 名 字 和 标 识 符 是 一 样 的 东 西 , 不 过 , 当 我 们 说 名 字 的 时 候 , 通 常 是 指 其 全 称 ,也 就 是 说 , 表 明 自 己 位 于 哪 个 符 号 表 的 名 字 。 这 样 的 名 字 可 能 是 一 个 由 标 记 :: 分 隔 的 标 识符 的 序 列 :$Santa::Helper::Reindeer::Rudolph::nose就 象 一 个 路 径 名 里 面 的 目 录 和 文 件 一 样 :/Santa/Helper/Reindeer/Rudolph/nose在 <strong>Perl</strong> 的 那 个 表 示 法 里 面 , 所 有 前 导 的 标 识 符 都 是 嵌 套 的 符 号 表 名 字 , 并 且 最 后 一 个 标 识符 就 是 变 量 所 在 的 最 里 层 的 符 号 表 的 名 字 。 比 如 , 上 面 的 变 量 里 , 符 号 表 的 名 字 是Santa::Helper::Reindeer::Rudolph::, 而 位 于 此 符 号 表 的 实 际 变 量 是 $nose。( 当 然 ,该 变 量 的 值 是 “red”。)<strong>Perl</strong> 里 的 符 号 表 也 被 称 为 包 (package), 因 此 这 些 变 量 常 被 称 为 包 变 量 。 包 变 量 名 义 上是 其 所 属 包 的 私 有 成 员 , 但 实 际 上 是 全 局 的 , 因 为 包 本 身 就 是 全 局 的 。 也 就 是 说 , 任 何 人 都可 以 命 名 包 以 获 取 该 变 量 ; 但 就 是 不 容 易 碰 巧 做 到 这 些 。 比 如 , 任 何 提 到 $Dog::bert 的程 序 都 是 获 取 位 于 Dog:: 包 的 变 量 $bert。 但 它 是 与 $Cat::bert 完 全 不 同 的 变 量 。 参阅 第 十 章 , 包 。附 着 在 词 法 范 围 上 的 变 量 不 属 于 任 何 包 , 因 此 词 法 范 围 变 量 名 字 可 能 不 包 含 :: 序 列 。( 词法 范 围 变 量 都 是 用 my 定 义 式 定 义 的 。)2.5.1 名 字 查 找那 问 题 就 来 了 , 名 字 里 有 什 么 ? 如 果 你 光 是 说 $bert,<strong>Perl</strong> 是 怎 样 了 解 你 的 意 思 的 ? 问 得好 。 下 面 是 在 一 定 环 境 里 <strong>Perl</strong> 分 析 器 为 了 理 解 一 个 非 全 称 的 名 字 时 用 到 的 规 则 :55

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

Saved successfully!

Ooh no, something went wrong!