perl 练习题打印文本中某个单词出现的次数

回复 收藏
要求:读取一系列单词,每行一个直到文件结束,然后打印每个单词出现的次数。要求按照ASCII码排序输出。

说明:
1. 本脚本中用到了数组的去重知识点,这在以前并没有学到过,是从网上找出来的,由于能力有限,目前只有通过去重才能构成题目要求的哈希。
2. 脚本中用了两次循环,和多次数组赋值,如果文本很大的话,这对于内存开销是相当大的,我想在以后学习过程中会有优化的方法,暂时就这样写了。

脚本中用到的文本内容为:
cat 6.2.txt
g
b
k
a
c
c
d
e
e
e
f
g
h
a
f
c
a
c

脚本内容:
  1. #! /usr/bin/perl
  2. if ( ! open TEXT, "./6.2.txt" ) {
  3.         die $!;
  4. }
  5. chomp (@a = );
  6. close TEXT;
  7. @a = sort @a;
  8. my @b = grep { ++$co{$_} < 2;} @a;
  9. for (@b) {
  10.         my $count = 0;
  11.         $w = $_;
  12.         push (@c, $_);
  13.         @d = @a;
  14.         while (@d) {
  15.                 my $b = shift @d;
  16.                 if ($w eq $b) {
  17.                         $count++;
  18.                 }
  19.         }
  20.         if ( $count > 0 ) {
  21.                 push (@c, $count);
  22.         }else {
  23.                 push (@c, 1);
  24.         }
  25. }
  26. my %h = @c;
  27. for (@b) {
  28.         print "$_ => $h{$_}\n";
  29. }
2012-11-16 16:30 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: