dポイントプレゼントキャンペーン実施中!

Perlで、文字の出現回数を調べたいのですが、
どうすればよいのかわかりません。

while(<>){
s/あ/あ/g;
}

これを利用して、数えられないかと思ったのですが、
これだと無理ですよね。
1行に何度も出てくる文字も、ちゃんとカウントしたいのですが、
どのようにすればよいのでしょうか。

ご教示、お願い致します。

A 回答 (2件)

「特定の文字」の出現回数を調べるなら tr/// がセオリー. s///g と同じといえば同じだけど.


「すべての文字」の出現回数を (個別に) 数えるなら split + ハッシュ.
    • good
    • 0

こんな感じでいかがですか?


半角、全角混じっていると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";

この回答への補足

ありがとうございます。

申し訳ありませんが、さらに教えていただけるとありがたいです。

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の仕方が、
いまいちよくわかりません。
ご教示いただけると助かります。

よろしくお願い致します。

補足日時:2010/09/17 09:22
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!