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.

open my $self, $form, @_ or croak "can't open $form@_: $!";if ($form =~ />/) {print $self "\n";$$self->{WRITING} = 1;# 记 得 写 结 束 标 记}return bless $self, $class;# $self 是 一 个 全 局 引 用}在 这 里 , 我 们 根 据 传 递 给 tie 操 作 符 的 模 式 和 文 件 名 打 开 一 个 新 的 文 件 句 柄 , 向 文 件 中 写入 , 然 后 返 回 一 个 指 向 它 的 赐 福 了 的 引 用 。 在 open 语 句 里 有 一 大 堆 东 西 , 不 过 我 们 将只 会 指 出 一 点 , 除 了 通 常 的 "open or die" 惯 用 法 以 外 ,my $self 给 open 提 供 了 一个 未 定 义 的 标 量 ,open 知 道 自 动 把 那 个 标 量 转 成 一 个 类 型 团 。 这 个 变 量 是 类 型 团 这 一 点非 常 重 要 , 因 为 这 个 类 型 团 不 仅 包 含 文 件 真 实 的 I/O 对 象 , 而 且 还 包 含 各 种 各 样 其 他 可以 自 由 获 取 的 数 据 结 构 , 比 如 一 个 标 量 ($$$self), 一 个 数 组 (@$$self), 和 一 个 散列 (%$$self)。( 我 们 不 会 提 到 子 过 程 ,&$$self。)$form 是 文 件 名 或 者 模 式 参 数 。 如 果 它 是 一 个 文 件 名 ,@_ 就 是 空 的 , 所 以 它 的 性 质 就象 一 个 两 个 参 数 的 open。 否 则 ,$form 就 是 剩 余 参 数 的 模 式 。open 之 后 , 我 们 检 测 一 下 看 看 我 们 是 否 应 该 写 入 表 示 开 始 的 标 记 。 如 果 是 , 我 们 就 写 。然 后 我 们 马 上 使 用 那 些 我 们 谈 到 的 团 数 据 结 构 。 那 个 @@self->{WRITING} 是 一 个 使 用团 存 储 有 趣 信 息 的 一 个 例 子 。 在 这 个 例 子 里 , 我 们 记 住 是 否 写 过 起 始 标 记 , 这 样 我 们 才 知道 我 们 是 否 应 该 做 相 应 的 结 束 标 记 。 我 们 正 在 使 用 %$$self 散 列 , 所 以 我 们 可 以 给 那 个数 据 域 一 个 象 样 的 名 字 。 我 们 本 可 以 用 象 $$$self 这 样 的 标 量 , 但 是 那 样 不 能 自 说 明 。( 或者 它 只 能 自 说 明 —— 取 决 于 你 如 何 看 它 。)SELF->PRINT(LIST)这 个 方 法 实 现 了 一 个 向 捆 绑 的 句 柄 print。LIST 是 传 递 给 print 的 东 西 。 我 们 下 面 的 方法 把 LIST 的 每 个 元 素 都 转 换 成 大 写 :sub PRINT {my $self = shift;print $self map {uc} @_;379

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

Saved successfully!

Ooh no, something went wrong!