ハッシュと正規表現、ループの練習〜ある一日のapachログを10分ごと、30分ごとにカウントしよう
準備物は、ある一日のapacheのログが書かれたファイルです。
そして、いきなり回答です。
#! /usr/bin/perl use strict; use warnings; use Data::Dumper; my %count10; #10分ごとのカウント my %count30; #30分ごとのカウント open(FH,'<access'); # accessはログのファイル while(my $data = <FH>){ chop($data); my ($h, $m1, $m2, $s) = ($data =~ /\d{4}:(\d{2}):(\d)(\d):(\d{2})/); $count10{"$h:${m1}0:00_$h:${m1}9:59"}++; $count30{"$h:00:00_$h:29:59"}++ if 0 <= $m1 && $m1 <= 2; $count30{"$h:30:00_$h:59:59"}++ if 3 <= $m1 && $m1 <= 5; } close (FH); print Dumper \%count10; print Dumper \%count30;