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.

这 里 是 一 个 简 单 的 Tie::Counter 类 , 灵 感 来 自 CPAN 中 同 名 的 模 块 。 捆 绑 到 这 个 类 上的 变 量 每 次 自 增 1。 比 如 :tie my $counter, "Tie::Counter", 100;@array = qw /Red Green Blue/;for my $color (@array) { # 打 印 :print " $counter $color\n";# 100 Red} # 101 Green# 102 Blue构 造 器 把 一 个 可 选 的 额 外 参 数 当 作 计 数 器 的 初 始 值 , 缺 省 时 为 零 。 给 这 个 计 数 器 赋 值 将 设 置一 个 新 值 。 下 面 是 类 :package Tie::Counter;sub FETCH { ++ ${ $_[0] }}sub STORE { ${ $_[0] } = $_[1] }sub TIESCALAR {my ($class, $value) = @_;$value = 0 unless defined $value;bless \$value => $class;}1; # 如 果 在 模 块 里 需 要 这 个多 小 ! 看 到 了 吗 ? 要 写 这 么 一 个 类 并 不 需 要 多 少 代 码 。14.1.3 神 奇 地 消 除 $_这 个 让 人 好 奇 的 外 部 的 捆 绑 类 用 于 防 止 非 局 部 的 $_ 的 使 用 。 它 不 是 用 use 把 方 法 拉 进来 , 而 是 调 用 该 类 的 import 方 法 , 装 载 这 个 模 块 应 该 用 no, 以 便 调 用 很 少 用 的unimport 方 法 。 用 户 说 :no Underscore;356

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

Saved successfully!

Ooh no, something went wrong!