Lesson 9

 

 




練習問題A

 

 


1. wordfreq3.pl に手を加え,単語の認定をより正確に行えるようにしなさい。(wordfreq2b.pl を基にしてもよい。)

 

while (<>) {
    &delpunc ();                                 #delete punctuation marks

    while (/\b[\S-']+\b/g) {                  #ハイフン・アポストロフィを含んだ単語も認める
        $freq{$&}++;
    }
}

foreach $i (sort {$a cmp $b} keys %freq) {
    printf "%4d %s\n", $freq{$i}, $i;
}

sub delpunc {
    s/--+/ /g;                                            # ダッシュ
    s/[.,:;\?\!"`()]+//g;                                 # .,:;? ! "`()
    s#/# #g;                                             # スラッシュ 
}

exit;

 

 

 

 

 


2. wordfreq3.pl にさらに手を加え,大文字・小文字を区別せずに単語を数えられるようにしなさい。

 

 

while (<>) {
    $_ = lc $_;                                    # $_ の中身を全て小文字に変換
                                                       # 注) 出力も全て小文字になる
    &delpunc ();

    while (/\b[\S-']+\b/g) {
        $freq{$&}++;
    }
}

foreach $i (sort {$a cmp $b} keys %freq) {
    printf "%4d %s\n", $freq{$i}, $i;
}

sub delpunc {
    s/--+/ /g;
    s/[.,:;\?\!"`()]+//g;
    s#/# #g;
}

exit;