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.

列 )。 相 比 之 下 , 词 法 范 围 只 是 未 命 名 的 中 间 结 果 暂 存 器 , 不 会 存 在 于 任 何 符 号 表 , 只 是 附着 在 你 的 程 序 的 一 块 代 码 后 面 。 它 们 ( 词 法 范 围 ) 包 含 只 能 被 该 块 所 见 的 变 量 。( 那 也 是 我们 说 “ 范 围 ” 的 含 义 )。“ 词 法 ” 两 个 字 只 是 说 :“ 它 们 必 须 以 文 本 方 式 处 理 ”, 可 不 是 通 常 字 典赋 予 它 们 的 含 义 。 可 别 批 评 我 们 。在 任 何 名 字 空 间 里 ( 不 管 是 全 局 还 是 局 部 ), 每 个 变 量 类 型 都 有 自 己 的 由 趣 味 字 符 确 定 的 子名 字 空 间 。 你 可 以 把 同 一 个 名 字 用 于 一 个 标 量 变 量 , 一 个 数 组 或 者 一 个 散 列 ( 或 者 , 说 到 这份 上 , 可 以 是 一 个 文 件 句 柄 , 一 个 子 过 程 名 , 一 个 标 签 , 甚 至 你 的 宠 物 骆 驼 ) 也 不 用 担 心 会混 淆 。 这 就 意 味 着 $foo 和 @foo 是 两 个 不 同 的 变 量 。 加 上 以 前 的 规 则 , 这 还 意 味 着 $foo是 @foo 的 一 个 元 素 , 它 和 标 量 变 量 $foot 完 全 没 有 关 系 。 这 些 看 起 来 有 点 怪 异 , 不 过也 没 啥 , 因 为 它 就 是 怪 异 ( 译 注 : 我 是 流 氓 我 怕 谁 ?)。子 过 程 可 以 用 一 个 & 开 头 命 名 , 不 过 调 用 子 过 程 的 时 候 这 个 趣 味 字 符 是 可 选 的 。 子 过 程 通常 不 认 为 是 左 值 , 不 过 最 近 版 本 的 <strong>Perl</strong> 允 许 你 从 一 个 子 过 程 返 回 一 个 左 值 并 且 赋 予 该 子 过程 , 这 样 看 起 来 可 能 就 象 你 在 给 那 个 子 过 程 赋 值 。有 时 候 你 想 命 名 一 个 “ 所 有 叫 foo 的 东 西 ”, 而 不 管 它 的 趣 味 字 符 是 什 么 。 因 此 符 号 表 入 口可 以 用 一 个 前 缀 的 * 命 名 , 这 里 的 星 号 (*) 代 表 所 有 其 他 趣 味 字 符 。 我 们 把 这 些 东 西 称为 类 型 团 (typeglobs), 而 且 它 们 有 好 几 种 用 途 。 它 们 也 可 以 用 做 左 值 。 给 一 个 类 型 团(typeglobs) 赋 值 就 是 <strong>Perl</strong> 从 一 个 符 号 表 向 另 外 一 个 输 入 符 号 的 实 现 。 我 们 后 面 还 会 有更 多 内 容 讲 这 些 。和 大 多 数 计 算 机 语 言 类 似 ,<strong>Perl</strong> 有 一 个 保 留 字 列 表 , 它 把 这 个 表 里 的 字 看 作 特 殊 关 键 字 。不 过 , 由 于 变 量 名 总 是 以 趣 味 字 符 开 头 , 实 际 上 保 留 字 并 不 和 变 量 名 冲 突 。 不 过 , 有 些 其 他类 型 的 名 字 不 带 趣 味 字 符 , 比 如 标 签 和 文 件 句 柄 。 即 使 这 样 , 你 也 用 不 着 担 心 与 保 留 字 冲 突 。因 为 绝 大 多 数 保 留 字 都 是 完 全 小 写 , 我 们 推 荐 你 使 用 带 大 写 字 符 的 名 字 做 标 签 和 文 件 句 柄 。例 如 , 如 果 你 说 open(LOG,logfile), 而 不 是 open(log,"logfile"), 你 就 不 会 让 <strong>Perl</strong> 误以 为 你 正 在 与 内 建 的 log 操 作 符 ( 它 处 理 对 数 运 算 , 不 是 树 干 ( 译 注 : 英 文 "log" 有 树 干的 含 义 。)) 交 谈 。 使 用 大 写 的 文 件 句 柄 也 改 善 了 可 读 性 ( 注 :<strong>Perl</strong> 的 一 个 设 计 原 则 是 :不 同 的 东 西 看 起 来 应 该 不 同 。 和 那 些 试 图 强 制 把 不 同 的 东 西 变 得 看 起 来 一 样 的 语 言 比 较 一下 , 看 看 可 读 性 的 好 坏 。) 并 且 防 止 你 和 我 们 今 后 可 能 会 增 加 的 保 留 字 的 冲 突 。 处 于 同 样 的考 虑 , 用 户 定 义 的 模 块 通 常 都 是 用 首 字 母 大 写 的 名 字 命 名 的 , 这 样 就 不 会 和 内 建 的 模 块 ( 叫用 法 (pragmas)) 冲 突 , 因 为 内 建 模 块 都 是 以 小 写 字 母 命 名 的 。 到 了 面 向 对 象 命 名 的 时候 , 你 就 会 发 现 类 的 名 称 同 样 都 是 首 字 母 大 写 的 。你 也 许 能 从 前 面 的 段 落 中 推 导 出 这 样 的 结 论 了 , 就 是 标 识 符 是 大 小 写 敏 感 的 ——FOO,Foo,和 foo 在 <strong>Perl</strong> 里 面 都 是 不 同 的 名 字 。 标 识 符 以 字 母 或 下 划 线 开 头 , 可 以 包 含 任 意 长 度 ( 这个 “ 任 意 ” 值 的 范 围 是 1 到 251 之 间 ) 个 字 母 , 数 字 和 下 划 线 。 这 里 包 括 Unicode 字 母54

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

Saved successfully!

Ooh no, something went wrong!