The result order isn't actually random - it follows a carefully designed algorithm to maximize the efficiency of hash look-ups. The solution to your problem is to use a sorting function to choose the output order. For example, assume your structure was named %hash and your item_date is in epoch time, thus numerically sortable. You could use the code
sub by_date {
return $hash{$a}{item_date} <=> $hash{$b}{item_date};
}
for my $key (sort by_date keys %hash) {
print "$hash{$key}{item_key} $hash{$key}{item_description}\n"
}
to print out your database keys and descriptions in chronological order. I expect your dates are in a more complex format, and thus require a more complex sorting method. In order for your sorting function to work properly, it should return -1 if $a comes first, 1 if $b comes first and 0 if they are tied. perlop has a few more details. |