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.

你 可 以 用 下 面 所 示 的 脚 本 将 所 有 的 成 绩 收 集 在 一 起 , 同 时 计 算 出 每 个 学 生 的 平 均 分 数 , 并 将它 们 按 照 字 母 顺 序 打 印 出 来 。 这 个 程 序 天 真 地 假 设 在 你 的 班 级 中 没 有 重 名 的 学 生 , 比 如 没 有两 个 名 为 Carol 的 学 生 。 如 果 班 级 中 有 两 个 Carol, 文 件 中 所 有 以 Carol 开 头 的 条 目 ,程 序 都 会 认 为 这 是 第 一 个 Carol 的 成 绩 ( 但 是 不 会 跟 Noel 的 成 绩 混 淆 )。顺 便 说 一 句 , 下 面 程 序 里 的 行 号 并 不 是 程 序 的 一 部 分 , 任 何 与 BASIC 类 似 的 东 西 都 是 站不 住 脚 的 。1 #!/usr/bin/perl23 open(GRADES, "grades") or die "Can't open grades: $!\n";4 while ($line = ) {5 ($student, $grade) = split(" ", $line);6 $grades{$student} .= $grade . " ";7 }89 foreach $student (sort keys %grades) {10 $scores = 0;11 $total = 0;12 @grades = split(" ", $grades{$student});13 foreach $grade (@grades) {14 $total += $grade;15 $scores++;16 }17 $average = $total / $scores;18 print "$student: $grades{$student}\tAverage: $average\n";19 }23

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

Saved successfully!

Ooh no, something went wrong!