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.

这 个 方 法 声 明 将 要 用 于 这 个 文 件 句 柄 的 I/O 规 则 。 如 果 没 有 声 明 , 它 把 这 个 捆 绑 了 的 文件 句 柄 置 于 二 进 制 模 式 (:raw 规 则 ), 用 于 那 些 区 分 文 本 和 二 进 制 文 件 的 文 件 系 统 。sub BINMODE {my $self = shift;my $disc = shift || ":raw";return binmode $self, $disc;}就 这 么 写 , 但 实 际 上 这 个 方 法 在 我 们 的 类 中 没 有 什 么 用 , 因 为 open 已 经 向 句 柄 中 写 入 数据 了 。 所 以 在 我 们 的 例 子 里 我 们 可 能 可 以 做 的 更 简 单 些 :sub BINMODE { croak("Too late to use binmode") }SELF->FILENO这 个 方 法 应 该 返 回 与 捆 绑 的 文 件 句 柄 相 关 联 的 操 作 系 统 文 件 描 述 符 (fileno)。sub FILENO {my $self = shift;return fileno $self;}SELF->DESTROY和 其 他 类 型 的 捆 绑 一 样 , 当 对 象 将 要 删 除 的 时 候 触 发 这 个 方 法 。 对 象 清 理 自 己 的 时 候 很 有用 。 在 这 里 , 我 们 确 保 文 件 关 闭 了 , 以 免 程 序 忘 记 调 用 close。 我 们 可 以 只 说 close $self,不 过 更 好 的 方 法 是 调 用 该 类 的 CLOSE 方 法 。 这 样 的 话 , 如 果 类 的 设 计 者 决 定 修 改 文 件 关闭 的 方 法 的 话 , 这 个 DESTROY 方 法 就 不 用 改 了 。sub DESTROY {my $self = shift;$self->CLOSE;# 用 Shout 的 CLOSE 方 法 关 闭 文 件}384

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

Saved successfully!

Ooh no, something went wrong!