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.

请 注 意 -s/a/b/ 并 不 是 做 一 次 反 向 替 换 。 不 过 , 说 -exp($foo) 仍 然 会 和 你 预 期 的 那 样 运行 , 因 为 只 有 跟 在 负 号 后 面 的 单 个 字 符 才 解 释 成 文 件 测 试 。文 件 权 限 操 作 符 -r ,-R,-w,-W,-x 和 -X 的 解 释 各 自 基 于 文 件 和 用 户 的 用 户 ID 和组 ID。 可 能 还 有 其 他 原 因 让 你 无 法 真 正 读 , 写 或 执 行 该 文 件 , 比 如 Andrew FileSystem(AFS) 的 的 访 问 控 制 列 表 ( 注 : 不 过 , 你 可 以 用 use filetest 用 法 覆 盖 内 建 的 语义 。 参 阅 第 三 十 一 章 , 用 法 模 块 )。 还 要 注 意 的 是 , 对 于 超 级 用 户 而 言 ,-r,-R,-w 和 -W总 总 是 返 回 1, 并 且 如 果 文 件 模 式 里 设 置 了 执 行 位 ,-x 和 -X 也 返 回 1。 因 此 , 由 超 级 用 户执 行 的 脚 本 可 能 需 要 做 一 次 stat 来 检 测 文 件 的 真 实 模 式 , 或 者 暂 时 把 UID 设 置 为 其 他 的什 么 东 西 。其 他 文 件 测 试 操 作 符 不 关 心 你 是 谁 。 任 何 人 都 可 以 用 这 些 操 作 符 来 测 试 " 普 通 " 文 件 :while () {chomp;next unless -f $_;# 忽 略 “ 特 殊 ” 文 件...}-T 和 -B 开 关 按 照 下 面 描 述 的 方 法 运 转 。 检 查 文 件 的 第 一 块 的 内 容 , 查 找 是 否 有 类 似 控 制字 符 或 者 设 置 了 第 八 位 的 字 符 ( 这 样 看 起 来 就 不 象 UTF-8)。 如 果 有 超 过 三 分 之 一 的 字 符看 起 来 比 较 特 殊 , 它 就 是 二 进 制 文 件 ; 否 则 , 就 是 文 本 文 件 。 而 且 , 任 何 在 第 一 块 里 包 含ASCII NUL(\0 ) 的 文 件 都 会 被 认 为 是 二 进 制 文 件 。 如 果 对 文 件 句 柄 使 用 -T 或 -B, 则检 测 当 前 输 入 ( 标 准 I/O 或 者 “stdio”) 缓 冲 区 , 而 不 是 文 件 的 第 一 块 。-T 和 -B 对 空 文件 都 返 回 真 , 或 者 测 试 一 个 文 件 句 柄 时 读 到 EOF( 文 件 结 束 ) 时 也 返 回 真 。 因 为 <strong>Perl</strong> 需要 读 文 件 才 能 进 行 -T 测 试 , 所 以 你 大 概 不 想 在 某 些 特 殊 文 件 上 用 -T 把 系 统 搞 得 挂 起 来 ,或 者 是 发 生 其 他 让 你 痛 苦 的 事 情 吧 。 所 以 , 大 多 数 情 况 下 , 你 会 希 望 先 用 -f 测 试 , 比 如 :next unless -f $file && -T $file;如 果 给 任 何 文 件 测 试 ( 操 作 符 )( 或 者 是 stat 或 lstat 操 作 符 ) 的 特 殊 文 件 句 柄 只 包 含单 独 一 个 下 划 线 , 则 使 用 前 一 个 文 件 测 试 的 stat 结 构 , 这 样 就 省 了 一 次 系 统 调 用 。( 对 -t无 效 , 而 且 你 还 要 记 住 lstat 和 -l 会 在 stat 结 构 里 保 存 符 号 连 接 而 不 是 真 实 文 件 的 数值 。 类 似 地 , 在 一 个 正 常 的 stat 的 后 面 的 -l _ 总 是 会 为 假 。)下 面 是 几 个 例 子 :99

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

Saved successfully!

Ooh no, something went wrong!