in reply to Use a hashref as a key in another hashref?

Why not use the time stamp as the key then you can order output in a sane fashion:

use strict; use warnings; my @dateFields = qw(year month day hour minute); my @itemKeys = qw(burgers fries sodas); my %sales = ( makeEntry( 'day' => 1, 'month' => 1, 'year' => 2000, 'hour' => 4, 'minute' => 44, 'burgers_sold' => 5, 'fries_sold' => 3, 'sodas_sold' => 11 ), makeEntry( 'day' => 1, 'month' => 1, 'year' => 2000, 'hour' => 4, 'minute' => 45, 'burgers_sold' => 2, 'fries_sold' => 4, 'sodas_sold' => 7 ), ); for my $key (sort keys %sales) { print "$key\n"; printf " %-7s %s\n", $_, $sales{$key}{"${_}_sold"} for @itemKeys +; } sub makeEntry { my (%entry) = @_; return sprintf ("%04d/%02d/%02d %02d:%02d:00", @entry{@dateFields}), \%entry; }

Prints:

2000/01/01 04:44:00 burgers 5 fries 3 sodas 11 2000/01/01 04:45:00 burgers 2 fries 4 sodas 7
Perl is the programming world's equivalent of English