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.

数 组 和 散 列 也 互 不 相 同 . 当 你 想 通 过 编 号 来 查 找 东 西 的 时 候 , 你 要 用 数 组 . 而 如 果 你 想 通 过名 称 来 查 找 东 西 , 那 么 你 应 该 用 散 列 . 这 两 种 概 念 是 互 补 的 . 你 经 常 会 看 到 人 们 用 数 组 实 现月 份 数 到 月 份 名 的 翻 译 , 而 用 对 应 的 散 列 实 现 将 月 份 名 翻 译 成 月 份 数 .( 然 而 散 列 不 仅 仅 局限 于 保 存 数 字 , 比 如 , 你 可 以 有 一 个 散 列 用 于 将 月 名 翻 译 成 诞 生 石 的 名 字 .)数 组 . 一 个 数 组 是 多 个 标 量 的 有 序 列 表 , 可 以 用 标 量 在 列 表 中 的 位 置 来 访 问 ( 注 : 也 可 以 说是 索 引 , 脚 标 定 位 , 查 找 , 你 喜 欢 用 哪 个 就 用 哪 个 ) 其 中 的 标 量 , 列 表 中 可 以 包 含 数 字 , 字符 串 或 同 时 包 含 这 两 者 .( 同 时 也 可 以 包 括 对 数 组 和 散 列 的 引 用 ), 要 对 一 个 数 组 赋 值 , 你只 需 简 单 的 将 这 些 值 排 列 在 一 起 , 并 用 大 括 弧 括 起 来 .@home = ("couch", "chair", "table", "stove");相 反 , 如 果 你 在 列 表 环 境 中 使 用 @home, 例 如 在 一 个 列 表 赋 值 的 右 边 , 你 将 得 到 与 你 放进 数 组 时 同 样 的 列 表 . 所 以 可 以 你 象 下 面 那 样 从 数 组 给 四 个 标 量 赋 值 :($potato, $lift, $tennis, $pipe) = @home;他 们 被 称 为 列 表 赋 值 , 他 们 逻 辑 上 平 行 发 生 , 因 此 你 可 以 象 下 面 一 样 交 换 两 个 变 量 :($alpha, $omega) = ( $omega, $alpha);和 C 里 一 样 , 数 组 是 以 0 为 基 的 , 你 可 以 用 下 标 0 到 3 来 表 示 数 组 的 第 一 到 第 四 个 元素 .( 注 : 如 果 你 觉 得 不 好 记 , 那 么 就 把 脚 标 当 做 偏 移 量 , 也 就 是 它 前 面 的 元 素 个 数 . 显 然 ,第 一 个 元 素 前 面 没 有 任 何 元 素 , 因 此 偏 移 量 是 0. 计 算 机 就 是 这 么 想 的 .) 数 组 下 标 使 用中 括 弧 包 围 [ 象 这 样 ], 因 此 如 果 你 想 选 用 独 立 的 数 组 元 素 , 你 可 以 表 示 为 $home[n], 这里 n 是 下 标 ( 元 素 编 码 减 一 ), 参 考 下 面 的 这 个 例 子 . 因 为 我 们 处 理 的 这 个 数 组 元 素 是 标量 , 因 此 在 他 前 面 总 是 前 缀 $.如 果 你 想 一 次 对 一 个 数 组 元 素 赋 值 , 你 可 以 使 用 下 面 的 方 法 :$home[0] = "couch";$home[1] = "chair";$home[2] = "table";$home[3] = "stove";因 为 数 组 是 有 序 的 , 所 以 你 可 以 在 它 上 面 做 很 多 很 有 用 操 作 . 例 如 堆 栈 操 作 push 和 pop,堆 栈 就 是 一 个 有 序 的 列 表 , 有 一 个 开 始 和 一 个 结 尾 . 特 别 是 有 一 个 结 尾 .<strong>Perl</strong> 将 你 数 组 的结 尾 当 成 堆 栈 的 顶 端 ( 也 有 很 多 的 <strong>Perl</strong> 程 序 员 认 为 数 组 是 水 平 的 , 因 此 堆 栈 的 顶 端 在 数 组的 右 侧 .)15

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

Saved successfully!

Ooh no, something went wrong!