CGI-BBS > CGI > Perl > ファイルの中の条件に合う行数をカウントするには?


カレッヂ
カレッヂ


質問者 海老  投稿日 4/22(日) 23:36:59
ログファイルの中の指定した条件に合う行数を数えるにはどうしたら良いのでしょうか?
例えばログファイルの中身が、

1<>name<>e-mail<>url<>
1<>name<>e-mail<>url<>
5<>name<>e-mail<>url<>
4<>name<>e-mail<>url<>

という形式であったとして、
最初の数字が5の行は2行。
5の行は1行。
4の行は1行。というふうに条件にあう行数をカウントして、
ブラウザに
1 = 2行
5 = 1行
4 = 1行
といった感じで出力したいのですが...
どなたか御教授下さい。お願いします。
回答者 しあわせのツボ  [削除]  投稿日 4/22(日) 23:57:54
こんな感じかな? エラー処理等は省略します。
open(DB,"log.dat");
while (<DB>) {
        ($num,$other) = split(/<>/);
        $COUNT{$num}++;
}
close(DB);
while(($num,$counts) = each %COUNT) {
        print "$num = $counts行<br>\n";
}
質問者 海老  [削除]  投稿日 4/23(月) 00:21:10
素早い御教授ありがとうございます。
さっそく試してみます。
本当にありがとうございます。
質問者 海老  [削除]  投稿日 4/23(月) 16:24:05
また質問なんですが、
もし最初の番号に合う数字がない場合、0と表示するにはどうしたら良いのでしょうか?
条件分岐でやってみましたが上手くいきません。
どなたか御教授ください。
質問者 海老  [削除]  投稿日 4/23(月) 16:39:40
すいません、わかりました。

このページは終了したので返信(回答)は書きこめません

Web裏技