Even if you prepend the '0' before values, it still isn't enough. For example 2000<2008 but 10/2000>08/2008, so it is right to check big things first.
About the hashes, my point was that the usual case is that you define a hash as
%hash = (key1=>value1, key2=>value2...); and it is not frequent (if plausible) to use the => symbol inside the
key definition. You say
$ClubTotal{'DayOfMonth'=>$date}{..} =... which puts the '=>' in the key. Now, the hash concept is that a hash is just a table organized by
distinct words. As such, there is no point in prefixing the 'DayOfMonth' (a constant string before the date) and the '=>' is really
misleading because one expects a value after it. It would be much more readable to write something like this:
%ClubTotal = {
$date => {
TotalPerDay=>1,
HourSignIn=>
{
Value=>$hour,
ToPerlHour=>$perlHour
}
}
}
This is just an example. Things should be as simple as possible. For example, in your code you say:
$ClubTotal{ 'DayOfMonth'=> $date }{'Date'} = $date ;, which means that your key and value are the same variable! There are 3
date's in this code which is a waste of time (and space). Simply stating
$ClubTotal{$date}=... is enough since the date you want is the key of the hash.