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;