【Perl】ファイル内の単語出現回数を数えて多い順に表示する

Perl

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のキーが設定されます)。

タイトルとURLをコピーしました