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.

Testing Filetest: detectedTesting Nesting: 123 missed!“ 丢 失 ” 了 最 后 一 个 是 因 为 它 由 for 循 环 正 确 地 局 部 化 了 , 并 且 因 此 可 以 安 全 地 访 问 。下 面 是 让 人 感 兴 趣 的 外 部 Underscore 模 块 本 身 。( 我 们 说 过 它 是 让 人 感 兴 趣 的 外 部 吗 ?)它 能 运 转 是 因 为 捆 绑 的 神 奇 变 量 被 一 个 local 有 效 地 隐 藏 起 来 了 。 该 模 块 在 它 自 己 的 初 始化 代 码 里 做 了 一 个 tie , 所 以 require 也 能 运 转 。package Underscore;use Carp;sub TIESCALAR { bless \my $dummy => shift }sub FETCH { croak 'Read access to $_ forbidden' }sub STORE { croak 'Write access to $_ forbidden' }sub unimport { tie($_, __PACKAGE__) }sub import { untie $_ }tie($_, __PACKAGE__) unless tied $_;1;在 你 的 程 序 里 对 这 个 类 混 合 调 用 use 和 no 几 乎 没 有 任 何 用 处 , 因 为 它 们 都 在 编 译 时 发生 , 而 不 是 运 行 时 。 你 可 以 直 接 调 用 Underscore->import 和Underscore->unimport, 就 象 use 和 no 那 样 。 通 常 , 如 果 你 想 反 悔 并 且 让 自 己 可 以使 用 $_, 你 就 要 对 它 使 用 local, 这 也 是 所 有 要 点 所 在 。14.2 捆 绑 数 组一 个 实 现 捆 绑 数 组 的 类 至 少 要 定 义 方 法 TIEARRAY,FETCH, 和 STORE。 此 外 还 有 许 多可 选 方 法 : 普 遍 存 在 的 DESTROY 方 法 , 还 有 用 于 提 供 $#array 和 scalar(@array) 访问 的 STORESIZE 和 FETCHSIZE 方 法 。 另 外 , 当 <strong>Perl</strong> 需 要 清 空 该 数 组 时 会 触 发CLEAR , 而 当 <strong>Perl</strong> 在 一 个 真 正 的 数 组 上 需 要 预 先 扩 充 ( 空 间 ) 分 配 的 时 候 需 要 EXTEND。如 果 你 想 让 相 应 的 函 数 在 捆 绑 的 数 组 上 也 能 够 运 行 , 你 还 可 以 定 义 POP,PUSH,SHIFT,UNSHIFT,SPLICE,DELETE, 和 EXISTS 方 法 。Tie::Array 类 可 以 作 为 一 个 基 类 ,用 于 利 用 FETCH 和 STORE 实 现 前 五 个 函 数 。(Tie::Array 的 DELETE 和 EXISTS358

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

Saved successfully!

Ooh no, something went wrong!