• 締切済み

Perlで、文字の出現回数を調べたいのですが、

Perlで、文字の出現回数を調べたいのですが、 どうすればよいのかわかりません。 while(<>){ s/あ/あ/g; } これを利用して、数えられないかと思ったのですが、 これだと無理ですよね。 1行に何度も出てくる文字も、ちゃんとカウントしたいのですが、 どのようにすればよいのでしょうか。 ご教示、お願い致します。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「特定の文字」の出現回数を調べるなら tr/// がセオリー. s///g と同じといえば同じだけど. 「すべての文字」の出現回数を (個別に) 数えるなら split + ハッシュ.

すると、全ての回答が全文表示されます。
回答No.1

こんな感じでいかがですか? 半角、全角混じっているとutf8使わないと大変だと思います。 count.plをutf-8で保存して動かしたら、 「あ」だと1、「い」だと2というように表示されると思います。 count.pl #!/usr/bin/perl use strict; use utf8; #調べる文字列 my $text = 'あい いA AAううえええおおかかかおおお1234漢字カタカナ'; my @list = split //, $text; my $count; foreach (@list) { #//のなかに調べる文字を入れる if (/あ/) { $count++; } } print "$count\n";

maccha77
質問者

補足

ありがとうございます。 申し訳ありませんが、さらに教えていただけるとありがたいです。 fileからデータを入れたいので、以下のようにしてみました。 use strict; use utf8; #調べる文字列 open(IN,"a.txt"); my $text = <IN>; my @list = split //, $text; my $count; foreach (@list) { #//のなかに調べる文字を入れる if (/あ/) { $count++; } } close(IN); print "$count\n"; これでは、何も表示されませんでした。 プログラム中でのfile openの仕方が、 いまいちよくわかりません。 ご教示いただけると助かります。 よろしくお願い致します。

すると、全ての回答が全文表示されます。

関連するQ&A