$dataChunk = substr($_, 42, 17); # yields >06/05/2008 8:31a< from $_ if ($dataChunk =~ m|\d\d/\d\d/\d\d|) { $date = substr($dataChunk, 3, 2); # get date $hour = substr($dataChunk, 11, 2); # get hour $minute = substr($dataChunk, 14, 2); # get minutes $ampm = substr($dataChunk, 16, 1); # get am or pm if (($ampm eq "a") && ($hour <= 9)) {$hour = '0'.int($hour) ; } if (($ampm eq "p") && ($hour != 12)) {$hour = $hour + 12; } $ClubTotal{ 'DayOfMonth'=> $date }{'Date'} = $date ; $ClubTotal{ 'DayOfMonth'=> $date }{'TotalPerDay'} += 1 ; $ClubTotal{ 'DayOfMonth'=> $date }{ 'HourSignIn' => $hour }{'Hour'} = $hour ; $ClubTotal{ 'DayOfMonth'=> $date }{ 'HourSignIn' => $hour }{'TotPerHour'} += 1 ; if ($minute <= 29) { $ClubTotal{ 'DayOfMonth'=> $date }->{ 'HourSignIn' => $hour }->{'HalfHour00'} += 1 ; } else { $ClubTotal{ 'DayOfMonth'=> $date }->{ 'HourSignIn' => $hour }->{'HalfHour30'} += 1 ; } #* * * Do some extra stuff here, finished with input file * * * #* * * Call: sub SortBuildOutput{ * * * sub SortBuildOutput{ #%ClubTotal hash #DayOfMonthxx hash #HourSignInxx hash #TotPerHour scalar #HalfHour00 scalar #HalfHour30 scalar #Hour scalar my $day; my $hr; my @hr; foreach $day (sort keys %ClubTotal) { >>>>> foreach $hr (sort keys %{$ClubTotal{'$day'}{'HourSignIn'} } ) { <<<<< print $ClubTotal{$day}->{'Date'} . ": " . $ClubTotal{$day}->{'TotalPerDay'} . "\n"; # This TASK: Aggregate Data for end of month summary: # %ClubTotal = ( # 'DayOfMonth26' => { # 'HourSignIn13' => { # 'HalfHour30' => 7, # 'Hour' => 13, # 'HalfHour00' => 11, # 'TotPerHour' => 18 # } # } # to build a record for input to a spreadsheet } # END: foreach my $hr (sort keys %{$ClubTotal{'$day'}{HourSignIn}}) { } # END: foreach my $day (sort keys %ClubTotal) { } #END: sub SortBuildOutput{ #### %ClubTotal = ( 'DayOfMonth26' => { 'HourSignIn13' => { 'HalfHour30' => 13, 'Hour' => 13, 'HalfHour00' => 10, 'TotPerHour' => 23 }, 'HourSignIn12' => { 'HalfHour30' => 6, 'Hour' => 12, 'HalfHour00' => 8, 'TotPerHour' => 14 }, 'HourSignIn10' => { 'HalfHour30' => 20, 'Hour' => 10, 'HalfHour00' => 19, 'TotPerHour' => 39 'TotalPerDay' => 251, 'Date' => '26', 'DayOfMonth11' => { 'HourSignIn13' => { 'HalfHour30' => 7, 'Hour' => 13, 'HalfHour00' => 11, 'TotPerHour' => 18 }, 'HourSignIn10' => { 'HalfHour30' => 12, 'Hour' => 10, 'HalfHour00' => 11, 'TotPerHour' => 23 },