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.

语 意 改 变 了 。 如 果 模 块 包 含 的 是 在 @EXPORT_OK 列 表 里 的 名 字 , 那 么 输 入 者 就 需 要 明确 地 请 求 那 些 要 覆 盖 的 内 建 的 名 字 , 这 样 才 能 保 证 每 个 人 都 是 可 信 的 。内 建 的 函 数 的 最 早 的 版 本 总 是 可 以 通 过 伪 包 CORE 来 访 问 。 因 此 ,CORE::chdir 将 总 是最 初 编 译 进 <strong>Perl</strong> 里 的 版 本 , 即 使 chdir 关 键 字 已 经 被 覆 盖 了 。不 过 , 覆 盖 内 建 函 数 的 机 制 总 是 被 有 意 地 限 制 在 那 些 要 求 这 样 输 入 的 包 中 。 不 过 有 一 个 更 有覆 盖 性 的 机 制 可 以 让 你 在 任 何 地 方 覆 盖 一 个 内 建 的 函 数 , 而 不 用 考 虑 名 字 空 间 的 限 制 。 这 是通 过 在 CORE:GLOBAL 伪 包 里 定 义 该 函 数 来 实 现 的 。 下 面 是 是 用 一 个 可 以 理 解 正 则 表 达式 的 东 西 替 换 glob 操 作 符 的 例 子 。( 请 注 意 , 这 个 例 子 没 有 实 现 干 净 地 覆 盖 <strong>Perl</strong> 的 内 建glob 的 所 有 的 东 西 ,glob 在 不 同 的 标 量 或 者 列 表 环 境 里 的 行 为 是 不 一 致 的 . 实 际 上 , 许多 <strong>Perl</strong> 内 建 都 有 这 种 环 境 敏 感 的 行 为 , 而 一 个 写 得 好 的 覆 盖 应 该 充 分 支 持 这 些 行 为 。 有 关全 功 能 的 glob 覆 盖 的 例 子 , 你 可 以 学 习 和 <strong>Perl</strong> 绑 定 在 一 起 的 File::Glob 模 块 。) 总 之 ,下 面 的 是 一 个 不 全 面 的 例 子 :*CORE::GLOBAL::glob = sub {my $pat = shift;my @got;local *D;if (opendir D, '.') {$got = grep /$pat/, readdir D;closedir D;}return @got;}package Whatever;print ;# 显 示 当 前 目 录 里 的 所 有 用 法284

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

Saved successfully!

Ooh no, something went wrong!