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.

for $i (1..10) {@array = somefunc($i);$AoA = @array; # 错 误 !}在 这 里 @array 是 在 一 个 标 量 环 境 里 访 问 的 , 因 此 生 成 它 的 元 素 的 计 数 , 然 后 这 个 计 数 被忠 实 地 赋 予 $AoA[$i]。 赋 予 引 用 的 正 确 方 法 我 们 将 在 稍 后 介 绍 。在 产 生 前 面 的 错 误 之 后 , 人 们 认 识 到 他 们 需 要 赋 一 个 引 用 值 , 因 此 人 们 随 后 很 自 然 会 犯 的 的错 误 包 括 把 引 用 不 停 地 放 到 同 一 片 内 存 位 置 :for $i (1..10) {@array = somefunc($i);$AoA[$i] = \@array; # 又 错 了 !}每 个 for 循 环 的 第 二 行 生 成 的 引 用 都 是 一 样 的 , 也 就 是 说 , 一 个 指 向 同 一 个 数 组 @array的 引 用 。 的 确 , 这 个 数 组 在 循 环 的 每 个 回 合 中 都 会 变 化 , 但 是 当 所 有 的 话 都 说 完 了 , 所 有 的事 都 做 完 了 之 后 , $AoA 就 包 含 10 个 指 向 同 一 数 组 的 引 用 , 这 个 时 候 它 保 存 给 它 的 最 后一 次 赋 值 的 数 值 。 print @{$AoA[1]} 将 检 索 和 print @{$AoA[2]} 一 样 的 数 值 。下 面 是 更 成 功 的 方 法 :for $i (1..10) {@array = somefunc($i);$AoA[$i] = [ @array ]; # 正 确 !}在 @array 周 围 的 方 括 弧 创 建 一 个 新 的 匿 名 数 组 ,@array 里 的 元 素 都 将 拷 贝 到 这 里 。 然后 我 们 就 把 一 个 指 向 它 的 引 用 放 到 这 个 新 的 数 组 里 。一 个 类 似 的 结 果 —— 不 过 更 难 读 一 些 —— 可 以 是 :for $i (1..10) { @array = somefunc($i); @{$AoA[$i]} = @array; }243

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

Saved successfully!

Ooh no, something went wrong!