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.

这 回 我 们 决 定 : 如 果 FETCH 拿 到 了 不 是 引 用 的 东 西 , 那 么 就 摧 毁 ( 抛 出 一 个 例 外 ).( 它要 么 是 被 当 做 类 方 法 调 用 , 要 么 是 什 么 东 西 不 小 心 把 它 当 成 一 个 子 过 程 调 用 了 .) 我 们 没有 其 它 返 回 错 误 的 方 法 , 所 以 这 么 做 可 能 是 对 的 . 实 际 上 , 只 要 我 们 试 图 析 引 用 $self,<strong>Perl</strong> 都 会 立 刻 抛 出 一 个 例 外 ; 我 们 只 是 做 得 礼 貌 一 些 并 且 用 confess 把 完 整 的 堆 栈 追 踪输 出 到 用 户 的 屏 幕 上 .( 如 果 这 个 动 作 可 以 认 为 是 礼 貌 的 话 .)如 果 我 们 说 下 面 这 些 话 就 会 看 到 camel.lot 的 内 容 :tie($string, "ScalarFile", "camel.lot");print $string;• SELF->STORE(VALUE)当 设 置 ( 赋 值 ) 捆 绑 的 变 量 的 时 候 会 运 行 这 个 方 法 . 第 一 个 参 数 SELF 与 往 常 一 样 是 与 变量 关 联 的 对 象 ;VALUE 是 给 变 量 赋 的 值 .( 我 们 这 里 的 " 赋 值 " 的 含 义 比 较 宽 松 -- 任 何 修改 变 量 的 动 作 都 可 以 叫 做 STORE.)sub STORE {my($self, $value) = @_;ref $selfor confess "not a class method";open my $fh, ">", $$self or croak "can't clobber $$self:$!";syswrite($fh, $value) == length $valueor croak "can't write to $$self: $!";close $fhor croak "can't close $$self:$!";return $value;}在 给 它 " 赋 值 " 以 后 , 我 们 返 回 新 值 -- 因 为 这 也 是 赋 值 做 的 事 情 . 如 果 赋 值 失 败 , 我 们 把 错误 croak 出 来 . 可 能 的 原 因 是 我 们 没 有 写 该 关 联 文 件 的 权 限 , 或 者 磁 盘 满 , 或 者 磁 盘 控制 器 坏 了 . 有 时 候 是 你 控 制 这 些 局 势 , 有 时 候 是 局 势 控 制 你 .现 在 如 果 我 们 说 下 面 的 话 , 我 们 就 可 以 写 入 camel.lot 了 .tie($string, "ScalarFile", "camel.lot");354

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

Saved successfully!

Ooh no, something went wrong!