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.

}return @retlist;}下 面 是 一 个 函 数 , 能 够 返 回 一 个 列 表 , 这 个 列 表 包 含 在 每 个 传 入 的 散 列 结 构 中 都 出 现 的 键 字 .@common = inter (\%foo, \%bar, \%joe );sub inter {my %seen;for my $href (@_) {while (my $k = each %$href ) {$seen{$k}++;}}return grep { $seen{$_} == @_ } keys %seen;}这 里 我 们 只 用 了 普 通 的 列 表 返 回 机 制 . 当 你 想 传 送 或 返 回 一 个 散 列 结 构 时 会 发 生 什 么 ? 如 果你 仅 用 其 中 的 一 个 , 或 者 你 不 在 意 它 们 连 在 一 起 , 那 么 使 用 普 通 的 调 用 方 法 就 行 了 , 如 果 不是 , 那 么 就 会 稍 微 复 杂 一 些 .我 们 已 经 在 前 面 提 到 过 , 人 们 常 会 在 下 面 的 写 法 中 遇 到 麻 烦 :(@a, @b) = func(@c, @d);或 这 里 :(%a, %b) = func(%c, %d);这 些 表 达 式 将 不 会 正 确 工 作 , 它 只 会 设 置 @a 或 %a, 而 @b 或 %b 则 是 空 的 . 另 外 函 数不 会 得 到 两 个 分 离 的 数 组 和 散 列 结 构 作 为 参 数 : 它 和 往 常 一 样 从 @_ 中 得 到 一 个 长 列 表 .你 也 许 想 在 函 数 的 输 入 和 输 出 中 都 使 用 引 用 . 下 面 是 一 个 使 用 两 个 数 组 引 用 作 为 参 数 的 函数 , 并 且 根 据 数 组 中 包 含 元 数 的 多 少 为 顺 序 返 回 两 个 数 组 的 引 用 :188

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

Saved successfully!

Ooh no, something went wrong!