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.

最 后 , 尽 管 咱 们 这 里 没 有 谁 急 于 把 它 称 做 布 尔 化 , 你 还 是 可 以 通 过 创 建 一 个 bool 句 柄 来定 义 一 个 对 象 在 布 尔 环 境 里 应 该 如 何 解 释 ( 比 如 if, unless,while, for,and,or,&&,||,?:, 或 者 grep 表 达 式 的 语 句 块 )。如 果 你 已 经 有 了 它 们 中 的 任 意 一 个 , 你 就 可 以 自 动 生 成 这 三 个 转 换 操 作 符 的 任 何 一 个 ( 我们 稍 后 解 释 自 动 生 成 )。 你 的 句 柄 可 以 返 回 你 喜 欢 的 任 何 值 。 请 注 意 如 果 触 发 转 换 的 操 作也 被 重 载 , 则 该 重 载 将 在 后 面 立 即 发 生 。这 里 是 一 个 "" 的 例 子 , 它 在 字 串 化 时 调 用 一 个 对 象 的 as_string 句 柄 。 别 忘 记 引 起 引 号 :package Person;use overload q("") => \&as_string;sub new { my $class = shift; return bless {@_} => $class; }sub as_string {my $self = shift; my ($key, $value, $result); while (( $key, $value) = each%$self) { $result .= "$key => $value\n"; } return $result; }$obj = Person->new(height => 72, weight => 165, eyes => "vrown"); print$obj;这 里 会 打 印 下 面 的 内 容 ( 一 散 列 顺 序 ), 而 不 是 什 么 Person=HASH(0xba1350) 之 类 的东 西 :weight => 165 ...( 我 们 真 诚 的 希 望 此 人 不 是 用 公 斤 和 厘 米 做 单 位 的 。)算 术 操 作 符 :+,-,*,/,%,**,x,.,neg除 了 neg 以 外 这 些 应 该 都 很 熟 悉 ,neg 是 一 个 用 于 单 目 负 号 (-123 里 的 -) 的 特 殊 重 载键 字 。neg 和 - 键 字 之 间 的 区 别 允 许 你 给 单 目 负 号 和 双 目 负 号 ( 更 常 见 的 叫 法 是 减 号 )声 明 不 同 的 性 质 。如 果 你 重 载 了 - 而 没 有 重 载 neg, 然 后 试 图 使 用 一 个 单 目 负 号 ,<strong>Perl</strong> 会 为 你 模 拟 一 个neg 句 柄 。 这 就 是 所 谓 的 自 动 生 成 , 就 是 说 某 些 操 作 符 可 以 合 理 地 从 其 他 操 作 符 中 归 纳 出来 ( 以 “ 该 重 载 操 作 符 将 和 该 普 通 操 作 符 有 一 样 的 关 系 ” 为 假 设 ) 。 因 为 单 目 符 号 可 以 表 示成 双 目 符 号 的 一 个 函 数 ( 也 就 是 ,-123 等 于 0-123), 在 - 够 用 的 时 候 ,<strong>Perl</strong> 并 不 强335

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

Saved successfully!

Ooh no, something went wrong!