Is this more what you were thinking of?
#!/usr/bin/perl
use warnings;
use strict;
my %hours;
while(<DATA>) {
next unless $_ =~ /\w+/;
my @F = split;
if ( $F[2] =~ /(\d{2})\:\d{2}:\d{2}/ ) {
$hours{$1}{value} += $F[3];
$hours{$1}{count}++;
}
}
for ( sort { $a <=> $b } keys %hours ) {
print "Sum at $_ hours is ", $hours{$_}{value}, "\n";
print "Count at $_ hours is ", $hours{$_}{count}, "\n";
}
__DATA__
26603 2010-10-09 00:00:23 38784360.8136
26603 2010-10-09 00:01:23 36529742.6667
26603 2010-10-09 00:02:23 36966880.8000
26603 2010-10-09 00:03:23 35666405.8667
26603 2010-10-09 01:05:23 35600190.6667
26603 2010-10-09 02:06:23 39175029.2000
26603 2010-10-09 03:07:23 35386478.4000
26603 2010-10-09 04:08:27 35773482.7500
26603 2010-10-09 05:09:23 39073367.5714
26603 2010-10-09 06:10:23 34379049.8667
26603 2010-10-09 07:11:24 33984045.7705
26603 2010-10-09 09:12:23 36276301.8305
26603 2010-10-09 10:13:23 37248366.0000
which yields the results:
C:\Code>perl values_per_hour.pl
Sum at 00 hours is 147947390.147
Count at 00 hours is 4
Sum at 01 hours is 35600190.6667
Count at 01 hours is 1
Sum at 02 hours is 39175029.2
Count at 02 hours is 1
Sum at 03 hours is 35386478.4
Count at 03 hours is 1
Sum at 04 hours is 35773482.75
Count at 04 hours is 1
Sum at 05 hours is 39073367.5714
Count at 05 hours is 1
Sum at 06 hours is 34379049.8667
Count at 06 hours is 1
Sum at 07 hours is 33984045.7705
Count at 07 hours is 1
Sum at 09 hours is 36276301.8305
Count at 09 hours is 1
Sum at 10 hours is 37248366
Count at 10 hours is 1
C:\Code>