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.

多 关 于 mod_perl 的 东 西 , 请 参 考 Writing Apache Modules with <strong>Perl</strong> and C(O'Reilly,1999)。许 多 其 他 应 用 都 可 以 内 嵌 <strong>Perl</strong> 解 释 器 , 比 如 nvi,vim 和 innd; 我 们 可 不 指 望 在 这 里 把它 们 都 列 出 来 。 而 且 还 有 许 多 甚 至 都 不 敢 宣 传 它 们 有 内 嵌 的 <strong>Perl</strong> 引 擎 的 商 业 产 品 。 它 们 只是 在 内 部 使 用 它 , 因 为 它 能 按 照 他 们 的 风 格 实 现 他 们 的 程 序 。18.4 编 译 器 后 端所 以 , 如 果 Apache 可 以 现 在 编 译 一 个 <strong>Perl</strong> 程 序 而 稍 后 才 执 行 它 , 你 为 什 么 不 行 ?Apache 和 其 他 包 含 内 嵌 <strong>Perl</strong> 解 释 器 的 程 序 做 得 非 常 简 单 —— 它 们 从 来 不 把 分 析 树 存 到一 个 外 部 文 件 中 。 如 果 你 对 这 样 的 做 法 表 示 满 意 , 而 且 不 介 意 使 用 C API 获 得 这 样 的 特 性 ,那 么 你 可 以 做 一 样 的 事 情 。 参 阅 第 二 十 一 章 , 内 部 和 外 部 , 里 的 “ 嵌 入 <strong>Perl</strong>” 一 节 , 获 取 如何 从 一 个 闭 合 的 C 框 架 里 访 问 <strong>Perl</strong> 的 信 息 。如 果 你 不 想 走 这 条 路 或 者 有 其 他 需 要 , 那 么 还 有 几 个 选 择 可 用 。 你 可 以 不 让 来 自 <strong>Perl</strong> 编 译器 的 输 出 立 即 输 入 <strong>Perl</strong> 解 释 器 , 而 是 调 用 任 意 可 用 的 后 端 。 这 些 后 端 可 以 把 编 译 好 的 操 作码 串 行 化 和 存 储 到 任 何 外 部 文 件 中 , 甚 至 可 以 把 它 们 转 换 成 几 种 不 同 风 格 的 C 代 码 。请 注 意 那 些 代 码 生 成 器 都 是 非 常 试 验 性 的 工 具 , 在 生 产 环 境 中 不 可 靠 。 实 际 上 , 你 甚 至 都 不能 指 望 它 们 在 非 生 产 环 境 里 面 能 用 —— 除 了 极 为 稀 有 的 情 况 以 外 。 现 在 我 们 已 经 把 你 的 期 望值 降 得 足 够 低 了 , 这 样 任 何 成 功 都 可 以 比 较 容 易 超 过 它 们 , 这 时 候 我 们 才 能 放 心 地 告 诉 你 后端 是 如 何 运 行 的 。有 些 后 端 模 块 是 代 码 生 成 器 , 比 如 B::Bytecode,B::C, 和 B::CC。 其 他 的 实 际 上 都 是代 码 分 析 和 调 试 工 具 , 比 如 B::Deparse,B::Lint, 和 B::Xref。 除 了 这 些 后 端 以 外 , 标准 版 还 包 括 几 种 其 他 的 底 层 模 块 , 那 些 潜 在 的 <strong>Perl</strong> 代 码 开 发 工 具 的 作 者 可 能 对 它 们 感 兴趣 。 其 他 的 后 端 模 块 可 以 在 CPAN 找 到 , 包 括 ( 到 我 们 写 这 些 为 止 )B::Fathom,B::Graph,B::JVM::Jasmin, 和 B::Size。如 果 你 除 了 给 解 释 器 提 供 输 入 以 外 还 有 其 他 地 方 使 用 <strong>Perl</strong> 编 译 器 , 那 么 O 模 块 ( 也 就 是O.pm 文 件 ) 位 于 编 译 器 和 你 分 配 的 后 端 模 块 之 间 。 你 并 不 直 接 调 用 该 后 端 ; 相 反 , 你 调用 中 间 层 , 然 后 由 它 调 用 你 指 定 的 后 端 。 因 此 如 果 你 有 一 个 模 块 调 用 B::Backend, 你 可以 在 一 个 脚 本 里 这 样 来 调 用 :%perl -MO=Backend SCRIPTNAME有 些 后 端 需 要 选 项 , 用 下 面 的 方 法 声 明 :%perl -MO=Backend, OPTS SCRIPTNAME482

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

Saved successfully!

Ooh no, something went wrong!