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.

当 在 循 环 中 做 上 标 记 , 并 且 指 定 了 希 望 退 出 的 循 环 ,next 和 last 就 能 退 出 多 重 循 环 。 结合 语 句 修 饰 词 ( 我 们 稍 后 会 谈 到 的 条 件 表 达 式 的 另 外 一 种 形 式 ), 能 写 出 非 常 具 有 可 读 性 的退 出 循 环 代 码 ( 如 果 你 认 为 英 语 是 非 常 容 易 读 懂 的 ):LINE: while ($line = ) {last LINE if $line eq "\en"; # 在 第 一 个 空 白 行 处 停 止next LINE if $line =~ /^#/; # 忽 略 注 释 行# 你 的 东 西 放 在 这 里}你 也 许 会 说 : 稍 等 , 在 双 斜 杠 内 的 ^# 看 起 来 并 不 象 英 语 。 没 错 , 这 就 是 包 含 了 一 个 正 则表 达 式 的 模 式 匹 配 ( 虽 然 这 是 一 个 很 简 单 的 正 则 表 达 式 )。 在 下 一 节 中 , 我 们 将 讲 述 正 则 表达 式 。<strong>Perl</strong> 是 最 好 的 文 本 处 理 语 言 , 而 正 则 表 达 式 是 <strong>Perl</strong> 文 本 处 理 的 核 心 。1.7 正 则 表 达 式正 则 表 达 式 ( 也 可 以 表 示 为 regexes,regexps 或 Res) 广 泛 使 用 在 很 多 搜 索 程 序 里 ,比 如 :grep 和 findstr, 文 本 处 理 程 序 如 :sed 和 awk, 和 编 辑 器 程 序 , 如 :vi 和 emacs。一 个 正 则 表 达 式 就 是 一 种 方 法 , 这 种 方 法 能 够 描 述 一 组 字 符 串 , 但 不 用 列 出 所 有 的 字 符 串 。( 注 : 一 本 关 于 正 则 表 达 式 的 概 念 的 好 书 是 Jeffrey Friedl 的 “Mastering RegularExpressions”(O'Reilly & Associates)其 它 的 一 些 计 算 机 语 言 也 提 供 正 则 表 达 式 ( 其 中 的 一 些 甚 至 宣 扬 “ 支 持 <strong>Perl</strong>5 正 则 表 达 式 ”)但 是 没 有 一 种 能 象 <strong>Perl</strong> 一 样 将 正 则 表 达 式 和 语 言 结 合 成 一 体 。 正 则 表 达 式 有 几 种 使 用 方法 , 第 一 种 , 也 是 最 常 用 的 一 种 , 就 是 确 定 一 个 字 符 串 中 是 否 匹 配 某 个 模 式 , 因 为 在 一 个 布尔 环 境 中 它 们 返 回 真 或 假 。 因 此 当 看 见 /foo/ 这 样 的 语 句 出 现 在 一 个 条 件 表 达 式 中 , 我 们就 知 道 这 是 一 个 普 通 的 模 式 匹 配 操 作 符 :if (/Windows 95/) { print "Time to upgrade?\n" }第 二 种 方 法 , 如 果 你 能 将 一 个 模 式 在 字 符 串 中 定 位 , 你 就 可 以 用 别 的 东 西 来 替 换 它 。 因 此 当看 见 s/foo/bar/ 这 样 的 语 句 , 我 们 就 知 道 这 表 示 将 foo 替 换 成 bar。 我 们 叫 这 是 替 换 操作 符 。 同 样 , 它 根 据 是 否 替 换 成 功 返 回 真 或 假 。 但 是 一 般 我 们 需 要 的 就 是 它 的 副 作 用 :s/Windows/Linux/;最 后 , 模 式 不 仅 可 以 声 明 某 地 方 是 什 么 , 同 样 也 可 以 声 明 某 地 方 不 是 什 么 。 因 此 split 操作 符 使 用 了 一 个 正 则 表 达 式 来 声 明 哪 些 地 方 不 能 匹 配 。 在 split 中 , 正 则 表 达 式 定 义 了 各40

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

Saved successfully!

Ooh no, something went wrong!