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.

你 可 能 会 问 : 如 果 我 们 在 尖 角 操 作 符 里 放 上 一 些 更 有 趣 的 东 西 , 行 输 入 操 作 符 会 变 成 什 么呢 ? 答 案 是 它 会 变 异 成 不 同 的 操 作 符 。 如 果 在 尖 角 操 作 符 里 面 的 字 串 不 是 文 件 句 柄 名 或 标 量变 量 ( 甚 至 只 是 多 了 一 个 空 格 ), 它 就 会 被 解 释 成 一 个 要 “ 聚 集 ”( 注 : 文 件 团 和 前 面 提 到的 类 型 团 毫 无 关 系 , 除 了 它 们 都 把 * 字 符 用 于 通 配 符 模 式 以 外 。 当 用 做 通 配 符 用 途 时 , 字符 * 有 “ 聚 集 ”(glob) 的 别 名 。 对 于 类 型 团 而 言 , 它 是 聚 集 符 号 表 里 相 同 名 字 的 符 号 。 对于 文 件 团 而 言 , 它 在 一 个 目 录 里 做 通 配 符 匹 配 , 就 象 各 种 shell 做 的 一 样 。) 的 文 件 名 模式 。 这 里 的 文 件 名 模 式 与 当 前 目 录 里 的 ( 或 者 作 为 文 件 团 模 式 的 一 部 分 直 接 声 明 的 目 录 ) 文件 名 进 行 匹 配 , 并 且 匹 配 的 文 件 名 被 该 操 作 符 返 回 。 对 于 行 输 入 而 言 , 在 标 量 环 境 里 每 次 返回 一 个 名 字 , 而 在 列 表 环 境 里 则 是 一 起 返 回 。 后 面 一 种 用 法 更 常 见 ; 你 常 看 到 这 样 的 东 西 :@files = ;和 其 他 伪 文 本 一 样 , 首 先 进 行 一 层 的 变 量 代 换 , 不 过 你 不 能 说 , 因 为 我 们 前 面 已经 解 释 过 , 那 是 一 种 间 接 文 件 句 柄 。 在 老 版 本 的 <strong>Perl</strong> 里 , 程 序 员 可 以 用 插 入 花 括 弧 的 方 法来 强 制 它 解 释 成 文 件 团 :。 现 在 , 我 们 认 为 把 它 当 作 内 部 函 数 glob($foo) 调用 更 为 清 晰 , 这 么 做 也 可 能 是 在 第 一 时 间 进 行 干 预 的 正 确 方 法 。 所 以 , 如 果 你 不 想 重 载 尖 角操 作 符 ( 你 可 以 这 么 干 。) 你 可 以 这 么 写 :@files = glob("*.xml");不 管 你 用 glob 函 数 还 是 老 式 的 尖 括 弧 形 式 , 文 件 团 操 作 符 还 是 会 象 行 输 入 操 作 符 那 样 做while 特 殊 处 理 , 把 结 果 赋 予 $_。( 也 是 在 第 一 时 间 重 载 尖 角 操 作 符 的 基 本 原 理 。) 比 如 ,如 果 你 想 修 改 你 的 所 有 C 源 代 码 文 件 的 权 限 , 你 可 以 说 :while (glob "*.c") { chmod 0644, $_; }等 效 于 :while () { chmod 0644,$_; }最 初 glob 函 数 在 老 的 <strong>Perl</strong> 版 本 里 是 作 为 一 个 shell 命 令 实 现 的 ( 甚 至 在 旧 版 的 Unix里 也 一 样 ), 这 意 味 着 运 行 它 开 销 相 当 大 , 而 且 , 更 糟 的 是 它 不 是 在 所 有 地 方 运 行 得 都 一 样 。现 在 它 是 一 个 内 建 的 函 数 , 因 此 更 可 靠 并 且 快 多 了 。 参 阅 第 三 十 二 章 里 的 File:Glob 模 块的 描 述 获 取 如 何 修 改 这 个 操 作 符 的 缺 省 特 性 的 信 息 , 比 如 如 何 让 它 把 操 作 数 ( 参 数 ) 里 面 的空 白 当 作 路 径 名 分 隔 符 , 是 否 扩 展 发 音 符 或 花 括 弧 , 是 否 大 小 写 敏 感 和 是 否 对 返 回 值 排 序 等等 。当 然 , 处 理 上 面 chmod 命 令 的 最 短 的 和 可 能 最 易 读 的 方 法 是 把 文 件 团 当 作 一 个 列 表 操 作符 处 理 :chmod 0644, ;85

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

Saved successfully!

Ooh no, something went wrong!