13.07.2015 Views

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

open(SESAME, "input-pipe-command |")# 设 置 一 个 输 入 过 滤 器象 你 看 到 的 一 样 , 文 件 句 柄 可 以 使 用 任 何 名 字 。 一 旦 打 开 , 文 件 句 柄 SESAME 可 以 被 用来 访 问 相 应 的 文 件 或 管 道 , 直 到 它 被 明 确 地 关 闭 ( 也 许 你 可 以 猜 到 使 用 close(SESAME)来 关 闭 文 件 句 柄 ) 或 者 另 外 一 个 open 语 句 将 文 件 句 柄 同 别 的 文 件 关 联 起 来 。( 注 : 打 开一 个 已 经 打 开 的 文 件 句 柄 隐 含 地 关 闭 第 一 个 文 件 , 让 它 不 能 用 该 文 件 句 柄 访 问 , 然 后 再 打 开另 外 一 个 文 件 。 你 必 须 小 心 地 检 查 这 个 是 否 你 要 的 动 作 , 有 时 候 这 种 情 况 会 偶 然 发 生 , 比 如当 你 说 open($handle, $file) 的 时 候 ,$handle 碰 巧 包 含 着 一 个 常 量 字 串 。 确 保 设 置$handle 为 某 些 唯 一 的 东 西 , 否 则 你 就 是 在 同 样 的 文 件 句 柄 上 打 开 了 一 个 新 文 件 。 或 者 你可 以 让 $handle 是 未 定 义 ,<strong>Perl</strong> 自 然 会 给 你 填 充 它 。)一 旦 你 打 开 一 个 用 于 接 受 输 入 的 文 件 句 柄 , 你 可 以 使 用 读 行 操 作 符 来 读 入 一 行 , 因 为它 是 由 尖 括 弧 组 成 , 所 以 也 称 为 尖 角 操 作 符 。 读 行 操 作 符 用 于 括 住 与 你 需 要 读 入 文 件 相 关 联的 文 件 句 柄 ()。 当 使 用 空 的 读 行 操 作 符 时 , 将 读 入 命 令 行 上 指 定 的 所 有 文 件 , 当 命 令 行 未指 定 时 , 读 入 标 准 输 入 STDIN。( 这 是 很 多 过 滤 程 序 标 准 的 动 作 )。 一 个 使 用 STDIN 文件 句 柄 获 取 用 户 输 入 答 案 的 例 子 如 下 :print STDOUT "Enter a number: ";# 请 求 一 个 数 字$number = ;# 输 入 数 字print STDOUT "The number is $number.\n";# 打 印 该 数 字在 这 些 print 语 句 中 的 STDOUT 起 什 么 作 用 ? 实 际 上 这 只 是 你 使 用 输 出 文 件 句 柄 的 一种 方 法 。 文 件 句 柄 可 以 作 为 print 语 句 的 第 一 个 参 数 , 这 样 , 程 序 就 知 道 将 输 出 送 到 哪 里 ,在 这 个 例 子 中 , 文 件 句 柄 是 多 余 的 , 因 为 输 出 无 论 如 何 都 能 输 出 到 STDOUT。 就 象 STDIN是 缺 省 输 入 一 样 ,STDOUT 是 缺 省 的 输 出 途 径 。( 在 我 们 求 平 均 成 绩 的 例 子 中 , 第 18 行我 们 没 有 使 用 STDOUT 免 得 使 你 糊 涂 )。如 果 你 测 试 上 一 个 例 子 , 你 会 注 意 到 输 出 中 有 一 个 多 余 的 空 行 。 这 是 因 为 读 行 操 作 符 不 能 自动 将 新 行 符 从 你 的 输 入 中 删 除 。( 比 如 , 你 的 输 入 是 ”9\n”)。 为 了 方 便 你 去 除 新 行 符 ,<strong>Perl</strong> 提 供 了 chop 和 chomp 函 数 ,chop 不 加 区 别 地 去 处 字 符 串 地 最 后 一 个 字 符 , 并 将结 果 返 回 , 而 chomp 仅 删 除 结 束 标 记 ( 通 常 是 “\n”) 同 时 返 回 被 删 除 的 字 符 数 。 你 经 常能 看 见 这 样 来 处 理 单 行 输 入 :chop($number = );# 输 入 数 字 并 删 除 新 行还 有 另 外 一 种 写 法 :$number = ;chop($number);# 输 入 数 字# 删 除 新 行27

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

Saved successfully!

Ooh no, something went wrong!