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.

@chicks 包 含 (Wilma, Betty), 而 other() 函 数 返 回 只 有 一 个 元 素 的 列 表 (Dino), 那么 LIST 看 起 来 就 象 下 面 一 样 :(Fred,Barney,Wilma,Betty,Dino)sort 返 回 的 LIST:(Barney,Betty,Dino,Fred,Wilma)一 些 操 作 符 产 生 列 表 ( 如 keys), 而 一 些 操 作 符 使 用 列 表 ( 如 print), 还 有 其 它 一 些 操作 符 将 列 表 串 进 其 它 的 列 表 ( 如 sort)。 最 后 的 这 类 操 作 符 可 以 认 为 是 筛 选 器 。 同 shell 不一 样 , 数 据 流 是 从 右 到 左 , 因 为 列 表 操 作 符 从 右 开 始 操 作 参 数 , 你 可 以 在 一 行 中 堆 叠 几 个 列表 操 作 符 :print reverse sort map {lc} keys %hash;这 行 代 码 获 取 %hash 的 关 键 字 并 将 它 们 返 回 给 map 函 数 ,map 函 数 使 用 lc 将 所 有的 关 键 字 转 换 成 小 写 , 并 将 处 理 后 的 结 果 传 给 sort 函 数 进 行 排 序 , 然 后 再 传 给 reverse函 数 , reverse 函 数 将 列 表 元 素 颠 倒 顺 序 后 , 传 给 print 函 数 打 印 出 来 。正 如 你 看 到 的 一 样 , 使 用 <strong>Perl</strong> 描 述 比 使 用 英 语 要 简 单 的 多 。在 列 表 处 理 方 面 还 有 很 多 方 法 可 以 写 出 很 多 更 自 然 的 代 码 。 在 这 里 我 们 无 法 列 举 所 有 方 法 。但 是 作 为 一 个 例 子 , 让 我 们 回 到 正 则 表 达 式 , 我 们 曾 经 谈 到 在 标 量 中 使 用 一 个 模 式 来 看 是 否匹 配 。 但 是 如 果 你 在 一 个 列 表 环 境 中 使 用 模 式 , 它 将 做 一 些 其 它 的 事 情 : 它 将 获 得 所 有 的 反引 用 作 为 一 个 列 表 。 假 设 你 在 一 个 日 志 文 件 或 邮 箱 中 搜 索 。 并 且 希 望 分 析 一 些 包 含 象“12:59:59 am” 这 样 形 式 时 间 的 字 符 串 , 你 可 以 使 用 下 面 的 写 法 :($hour, $min, $sec, $ampm) = /(\ed+):(\ed+):(\ed+) *(\ew+)/;这 是 一 种 同 时 设 置 多 个 变 量 的 简 便 方 法 , 但 是 你 也 可 以 简 单 的 写 :@hmsa = /(\ed+):(\ed+):(\ed+) *(\ew+)/;这 里 将 所 有 四 个 值 放 进 了 一 个 数 组 。 奇 秒 的 , 通 过 从 <strong>Perl</strong> 表 达 式 能 力 中 分 离 正 则 表 达 式 的能 力 , 列 表 环 境 增 加 了 语 言 的 能 力 。 有 些 人 可 能 不 同 意 , 但 是 <strong>Perl</strong> 除 了 是 一 种 斜 交 语 言 外 ,它 还 的 确 是 一 种 正 交 语 言 .1.9 你 不 知 道 但 不 伤 害 你 的 东 西 ( 很 多 )最 后 , 请 允 许 我 们 再 次 回 顾 <strong>Perl</strong> 是 一 种 自 然 语 言 的 概 念 。 自 然 语 言 允 许 使 用 者 有 不 同 的 技巧 级 别 , 使 用 语 言 不 同 的 子 集 , 并 且 边 学 边 用 。 通 常 在 知 道 语 言 的 全 部 内 容 之 前 , 他 们 就 可47

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

Saved successfully!

Ooh no, something went wrong!