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.

第 三 章 , 单 目 和 双 目 操 作 符 , 里 描 述 的 =~ 和 !~ 操 作 符 把 它 们 左 边 的 标 量 表 达 式 和 在 右边 的 三 个 引 起 类 操 作 符 之 一 绑 定 在 一 起 : m// 用 于 匹 配 一 个 模 式 ,s/// 用 于 将 某 个 符 合模 式 的 子 字 串 代 换 为 某 个 字 串 , 而 tr/// ( 或 者 其 同 义 词 ,y///) 用 于 将 一 套 字 符 转 换 成另 一 套 。( 如 果 把 斜 杠 用 做 分 隔 符 , 你 可 以 把 m// 写 成 //, 不 用 写 m。) 如 果 =~ 或 !~的 右 手 边 不 是 上 面 三 个 , 它 仍 然 当 作 是 m// 匹 配 操 作 , 不 过 此 时 你 已 经 没 有 地 方 放 跟 在 后面 的 修 饰 词 了 ( 参 阅 后 面 的 “ 模 式 修 饰 词 ”), 并 且 你 必 须 操 作 自 己 的 引 号 包 围 :print "matches" if $somestring =~ $somepattern;不 过 , 我 们 实 在 没 道 理 不 明 确 地 说 出 来 :print "matches" if$somestring =~ m/$somepattern/;当 用 于 匹 配 操 作 时 , 有 时 候 =~ 和 !~ 分 别 读 做 “ 匹 配 ” 和 “ 不 匹 配 ”( 因 为 “ 包 含 ” 和 “ 不 包含 ” 会 让 人 觉 得 有 点 模 糊 )。除 了 在 m// 和 s/// 操 作 符 里 使 用 外 , 在 <strong>Perl</strong> 的 另 外 两 个 地 方 也 使 用 正 则 表 达 式 。split函 数 的 第 一 个 参 数 是 一 个 特 殊 的 匹 配 操 作 符 , 它 声 明 的 是 当 把 字 串 分 解 成 多 个 子 字 串 后 不 返回 什 么 东 西 。 参 阅 第 二 十 九 章 , 函 数 , 里 的 关 于 split 的 描 述 和 例 子 。qr// (“ 引 起 正 则 表达 ”) 操 作 符 同 样 也 通 过 正 则 表 达 式 声 明 一 个 模 式 , 但 是 它 不 是 为 了 匹 配 匹 配 任 何 东 西 ( 和m// 做 的 不 一 样 )。 相 反 , 编 译 好 的 正 则 表 达 的 形 式 返 回 后 用 于 将 来 的 处 理 。 参 阅 “ 变 量 代换 ” 获 取 更 多 信 息 。你 用 m//,s/// 或 者 tr/// 操 作 符 和 =~ ( 从 语 言 学 上 来 说 , 它 不 是 真 正 的 操 作 符 , 只是 某 种 形 式 的 标 题 符 ) 绑 定 操 作 符 把 某 一 字 串 和 这 些 操 作 符 之 一 绑 定 起 来 。 下 面 是 一 些 例 子 :$haystack =~ m/meedle/$haystack =~ /needle/# 匹 配 一 个 简 单 模 式# 一 样 的 东 西$italiano =~ s/butter/olive oil/# 一 个 健 康 的 替 换$rotate13 =~ tr/a-zA-Z/n-za-mN-ZA-M/# 简 单 的 加 密如 果 没 有 绑 定 操 作 符 , 隐 含 地 用 $_ 做 “ 标 题 ”:/new life/ and # 搜 索 $_ 和 ( 如 果 找 到 )/new civilizations/# 再 次 更 宽 范 围 地 搜 索 $_149

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

Saved successfully!

Ooh no, something went wrong!