I saw the idea for a time hash somewhere long ago. I keep this snippet on our work wiki site so I don't forget. It could be cleaned, but is useful (one variable to hold the time data.)
sub h_localtime() {
my %time;
my @time = localtime(time);
my $iter = 0;
my @iter = qw/sec min hour mday mon year wday yday isdst/;
foreach (@iter) {
$time{$_} = $time[$iter];
$iter++;
}
$time{mon}++; # make month 1..12 instead of 0..11
$time{year}+=1900; # make year absolute instead of (year-1900)
$time{wday}++; # make week day 1..7 instead of 0..6
return %time;
}
The programmer can then do this:
my %t = h_localtime;
printf "%d %d %d\n", @t{qw/mday mon year/};
I don't know that it's a significant benefit in the parent example, but I like it.