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.

个 数 据 域 之 间 定 界 的 分 隔 符 。 在 我 们 的 “ 平 均 分 ” 例 子 中 , 我 们 在 第 5 和 12 行 使 用 了 两 次split, 将 字 符 串 用 空 格 分 界 以 返 回 一 列 词 。 当 然 你 可 以 用 正 则 表 达 式 给 split 指 定 任 何 分界 符 :($good, $bad, $ugly) = split(/,/, "vi,emacs,teco");(<strong>Perl</strong> 中 有 很 多 修 饰 符 可 以 让 我 们 能 轻 松 完 成 一 些 古 怪 的 任 务 , 例 如 在 字 符 匹 配 中 忽 略 大小 写 。 我 们 将 在 下 面 的 章 节 中 讲 述 这 些 复 杂 的 细 节 )正 则 表 达 式 最 简 单 的 应 用 就 是 匹 配 一 个 文 字 表 达 式 。 象 上 面 的 例 子 中 , 我 们 匹 配 单 个 的 逗 号 。但 如 果 你 在 一 行 中 匹 配 多 个 字 符 , 它 们 必 须 按 顺 序 匹 配 。 也 就 是 模 式 将 寻 找 你 希 望 要 的 子 串 。下 面 例 子 要 完 成 的 任 务 是 , 我 们 想 显 示 一 个 html 文 件 中 所 有 包 含 HTTP 连 接 的 行 。 我 们假 设 我 们 是 第 一 次 接 触 html, 而 且 我 们 知 道 所 有 的 这 些 连 接 都 是 有 “http:”, 因 此 我 们 写出 下 面 的 循 环 :while ($line = ) {if ($line =~ /http:/) {print $line;}}在 这 里 ,=~ 符 号 ( 模 式 绑 定 操 作 符 ) 告 诉 <strong>Perl</strong> 在 $line 中 寻 找 匹 配 正 则 表 达 式 “http:”,如 果 发 现 了 该 表 达 式 , 操 作 符 返 回 真 并 且 执 行 代 码 段 ( 一 个 打 印 语 句 )。( 注 : 非 常 类 似 于Unix 命 令 grep 'http:' file 做 的 事 情 , 在 MS-DOS 里 你 可 以 用 find 命 令 , 但 是 它 不知 道 如 何 做 更 复 杂 的 正 则 表 达 式 。( 不 过 ,Windows NT 里 名 字 错 误 的 findstr 程 序 知 道正 则 表 达 式 。)) 另 外 , 如 果 你 不 是 用 =~ 操 作 符 ,<strong>Perl</strong> 会 对 缺 省 字 符 串 进 行 操 作 。 这 就是 你 说 “Eek, 帮 我 找 一 下 我 的 联 系 镜 头 !”, 别 人 就 会 自 动 在 你 周 围 寻 找 , 而 不 用 你 明 确 告诉 他 们 。 同 样 ,<strong>Perl</strong> 也 知 道 当 你 没 有 告 诉 它 在 那 里 寻 找 的 时 候 , 它 会 在 一 个 缺 省 的 地 方 寻找 。 这 个 缺 省 的 字 符 串 就 是 $_ 这 个 特 殊 标 量 。 实 际 上 ,$_ 并 不 是 仅 仅 是 模 式 匹 配 的 缺 省字 符 串 。 其 它 的 一 些 操 作 符 缺 省 也 使 用 $_ 变 量 。 因 此 一 个 有 经 验 的 <strong>Perl</strong> 程 序 员 会 将 上个 例 子 写 成 :while () {print if /http:/;}( 这 里 我 们 又 提 到 另 外 一 个 语 句 修 饰 词 。 阴 险 的 小 动 物 。)41

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

Saved successfully!

Ooh no, something went wrong!