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.

荒 谬 的 是 , 我 们 让 <strong>Perl</strong> 分 清 楚 了 字 符 和 字 节 的 关 系 , 而 却 又 允 许 <strong>Perl</strong> 程 序 员 混 淆 它 们 的概 念 , 而 依 靠 <strong>Perl</strong> 来 保 持 界 限 , 就 好 象 我 们 允 许 程 序 员 混 淆 数 字 和 字 串 而 是 依 靠 <strong>Perl</strong> 做必 要 的 转 换 。 要 扩 展 可 能 性 ,<strong>Perl</strong> 处 理 Unicode 的 方 法 和 处 理 其 他 东 西 的 方 法 是 一 样 的 :做 正 确 的 事 情 。 通 常 , 我 们 要 实 现 下 面 四 个 目 标 :目 标 1:旧 的 面 向 字 节 的 程 序 不 能 同 时 破 坏 它 们 原 来 用 来 运 行 的 旧 式 面 向 字 节 的 数 据 。目 标 2:旧 的 面 向 字 节 的 程 序 在 合 适 的 条 件 下 应 该 能 神 奇 地 开 始 在 新 的 面 向 字 符 的 数 据 上 运 行 。目 标 3:程 序 在 新 的 面 向 字 符 模 式 下 应 该 和 原 来 的 面 向 字 节 的 模 式 运 行 得 一 样 快 。目 标 4:<strong>Perl</strong> 应 该 仍 然 是 一 种 语 言 , 而 不 是 分 裂 成 一 种 面 向 字 节 的 <strong>Perl</strong> 和 一 种 面 向 字 符 的 <strong>Perl</strong>。把 它 们 合 在 一 起 , 这 些 目 标 实 际 上 是 不 可 能 实 现 的 。 不 过 我 们 已 经 非 常 接 近 了 。 或 者 , 换 句话 说 , 我 们 仍 然 在 向 非 常 接 近 目 标 努 力 , 因 为 这 是 一 项 正 在 进 行 的 工 作 。 随 着 Unicode 的不 断 发 展 ,<strong>Perl</strong> 也 在 不 断 发 展 。 但 是 我 们 的 主 要 目 标 是 提 供 一 条 安 全 的 迁 移 路 径 , 这 样 我们 在 迁 移 的 过 程 中 只 需 要 最 少 的 注 意 就 可 以 了 。 我 们 是 如 何 做 的 是 下 一 节 的 内 容 。15.1 制 作 字 符在 <strong>Perl</strong> 5.6 以 前 的 版 本 , 所 有 字 串 都 被 看 成 一 个 字 节 序 列 ( 注 : 你 可 能 愿 意 把 它 们 称 做 “ 八位 字 节 ”; 那 样 挺 好 , 不 过 我 们 认 为 如 此 这 两 个 词 几 乎 同 义 , 所 以 我 们 仍 然 使 用 那 个 蓝 领 阶层 的 叫 法 ) 不 过 ,<strong>Perl</strong> 5.6 以 后 的 版 本 里 , 一 个 字 串 可 能 包 含 一 些 比 一 个 字 节 宽 的 字 符 。我 们 现 在 不 把 字 串 看 作 一 个 字 节 序 列 , 而 是 一 个 数 字 序 列 , 这 些 数 字 是 处 于 0 .. 2**32-1( 或 者 在 64 位 机 上 是 0 .. 2**64-1) 之 间 。 这 些 数 字 代 表 抽 象 的 字 符 , 而 且 在 某 种 意义 上 数 字 越 大 , 字 符 越 宽 ; 不 过 和 许 多 语 言 不 同 的 是 ,<strong>Perl</strong> 没 有 捆 绑 在 任 何 特 定 宽 度 的 字符 形 式 上 。<strong>Perl</strong> 使 用 一 种 变 长 编 码 ( 基 于 UTF-8), 所 以 这 些 抽 象 的 数 据 可 能 能 够 , 也 可能 不 能 够 每 字 节 封 装 一 个 数 字 。 显 然 , 字 符 数 字 18,446,744,073,709,551,615 ( 也 就是 "\x{ffff_ffff_ffff_ffff}") 肯 定 不 能 放 在 一 个 字 节 里 ( 实 际 上 , 它 占 了 十 三 个 字 节 ), 但是 如 果 你 的 字 串 里 的 所 有 字 符 都 在 十 进 制 0..127 的 范 围 里 , 那 么 它 们 肯 定 可 以 包 在 一 个字 节 的 范 围 里 , 因 为 UTF-8 在 低 七 位 空 间 里 和 ASCII 是 一 样 的 。401

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

Saved successfully!

Ooh no, something went wrong!