Perlはテキスト処理のための強力な機能を持っています。ファイル内の単語の出現回数を数えることはPerlの得意分野の一つです。この記事では、Perlを使用してファイル内の各単語の出現回数をカウントし上位10件を表示する方法を紹介します。
サンプルコード
単語のカウントは、単語をキーとするハッシュ%word_count内の値をインクリメントしてカウントします。
#!/usr/bin/perl
use strict;
use warnings;
# ファイル名
my $filename = 'C:\path\to\your\file.txt';
# ファイルを読み込みモードでオープン
open( INPUT, '<', $filename ) or die("Cannot open file: $!");
# 単語の出現回数を格納するハッシュ
my %word_count;
# ファイルの全行を処理
while (my $line = <INPUT>) {
# 文字列を単語に分割
my @words = split(/\s+/, $line);
# 各単語の出現回数をカウント
foreach my $word (@words) {
$word_count{$word}++;
}
}
# ファイルクローズ
close(INPUT);
# 出現回数が多い順に単語を10個分出力
my $count =0;
foreach my $word (sort { $word_count{$b} <=> $word_count{$a} } keys %word_count) {
print "$word: $word_count{$word}\n";
# 表示回数が10個に到達したらループ終了
$count++;
if($count >= 10) last;
}
ソートのためには、sort関数のブロック内で、ハッシュの値(出現回数)を基に比較を行っています。ここで、$word_count{$b} <=> $word_count{$a}という比較式を用いることで、数値の降順にソートしています($aと$bはsort関数によって自動的に設定される比較対象の変数です。このケースではハッシュ%word_countのキーが設定されます)。
まとめ
本記事では、Perlでファイル内の単語出現回数を数えて多い順に表示する方法を紹介しました。