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.

$info = `finger $user`;一 个 用 反 勾 号 ( 技 术 上 叫 重 音 号 ) 引 起 的 字 串 首 先 进 行 变 量 替 换 , 就 象 一 个 双 引 号 引 起 的 字串 一 样 。 得 到 的 结 果 然 后 被 系 统 当 作 一 个 命 令 行 , 而 且 那 个 命 令 的 输 出 成 为 伪 文 本 的 值 。( 这是 一 个 类 似 Unix shell 的 模 块 。) 在 标 量 环 境 里 , 返 回 一 个 包 含 所 有 输 出 的 字 串 。 在 列 表环 境 里 , 返 回 一 列 值 , 每 行 输 出 一 个 值 。( 你 可 以 通 过 设 置 $/ 来 使 用 不 同 的 行 结 束 符 。)每 次 计 算 伪 文 本 的 时 候 , 该 命 令 都 得 以 执 行 。 该 命 令 的 数 字 状 态 值 保 存 在 $?( 参 阅 第 二 十八 章 获 取 $? 的 解 释 , 也 被 称 为 $CHILD_ERROR )。 和 这 条 命 令 的 csh 版 本 不 同 的 是 ,对 返 回 数 据 不 做 任 何 转 换 —— 换 行 符 仍 然 是 换 行 符 。 和 所 有 shell 不 同 的 是 ,<strong>Perl</strong> 里 的 单引 号 不 会 隐 藏 命 令 行 上 的 变 量 , 使 之 避 免 代 换 。 要 给 shell 传 递 一 个 $, 你 必 须 用 反 斜 杠把 它 隐 藏 起 来 。 我 们 上 面 的 finger 例 子 里 的 $user 被 <strong>Perl</strong> 代 换 , 而 不 是 被 shell。( 因为 该 命 令 shell 处 理 , 参 阅 第 二 十 三 章 , 安 全 , 看 看 与 安 全 有 关 的 内 容 。)反 勾 号 的 一 般 形 式 是 qx//( 意 思 是 “ 引 起 的 执 行 ”), 但 这 个 操 作 符 的 作 用 完 全 和 普 通 的 反勾 号 一 样 。 你 只 要 选 择 你 的 引 起 字 符 就 行 了 。 有 一 点 和 引 起 的 伪 函 数 类 似 : 如 果 你 碰 巧 选 择了 单 引 号 做 你 的 分 隔 符 , 那 命 令 行 就 不 会 进 行 双 引 号 代 换 ;$perl_info = qx(ps $$); # 这 里 $$ 是 <strong>Perl</strong> 的 处 理 对 象 $perl_info = qx'ps $$'; #这 里 $$ 是 shell 的 处 理 对 象2.11.2 行 输 入 ( 尖 角 ) 操 作 符最 频 繁 使 用 的 是 行 输 入 操 作 符 , 也 叫 尖 角 操 作 符 或 者 readline 函 数 ( 因 为 那 是 我 们 内 部 的叫 法 )。 计 算 一 个 放 在 尖 括 弧 里 面 的 文 件 句 柄 ( 比 如 STDIN) 将 导 致 从 相 关 的 文 件 句 柄 读取 下 一 行 。( 包 括 新 行 , 所 以 根 据 <strong>Perl</strong> 的 真 值 标 准 , 一 个 新 输 入 的 行 总 是 真 , 直 到 文 件 结束 , 这 时 返 回 一 个 未 定 义 值 , 而 未 定 义 值 习 惯 是 为 假 。) 通 常 , 你 会 把 输 入 值 赋 予 一 个 变 量 ,但 是 有 一 种 情 况 会 发 生 自 动 赋 值 的 现 象 。 当 且 仅 当 行 输 入 操 作 符 是 一 个 while 循 环 的 唯 一一 个 条 件 的 时 候 , 其 值 自 动 赋 予 特 殊 变 量 $_。 然 后 就 对 这 个 赋 值 进 行 测 试 , 看 看 它 是 否 定义 了 。( 这 些 东 西 看 起 来 可 能 有 点 奇 怪 , 但 是 你 会 非 常 频 繁 地 使 用 到 这 个 构 造 , 所 以 值 得 花些 时 间 学 习 。) 因 此 , 下 面 行 是 一 样 的 :while (defined($_ = )) {print $_; }# 最 长 的 方 法while ($_ =

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

Saved successfully!

Ooh no, something went wrong!