Was looking through the PGAS code and ran into these lines :
# Is there a better way to do this? Probably
my $day = int($time_left/(60*60*24));
my $hour = int(($time_left%(60*60*24))/(60*60));
my $min = int((($time_left%(60*60*24))%(60*60))/60);
my $sec = int((($time_left%(60*60*24))%(60*60))%60);
my $day_hour_min_sec = "$day days, $hour hours, $min minutes, $sec seconds";
Here is a shorter way :
my @t = map { $time_left = ($time_left - ($time = $time_left % $_)) / $_; $time
}(60,60,24);
my $day_hour_min_sec = "$time_left days, $t[2] hours, $t[1] minutes, $t[0] seconds";
but how about the plural s in day / days etc.
here is what i hacked together.
my $t = $time_left;
my @t=qw{day hour minute second};
my $day_hour_min_sec = join', ',map{"$_ $t[$i++]".($_!=1?"s":"")}reverse
map{$t=($t-($,=$t%$_))/$_;$,}(60,60,24,9);
but in true golf style. anyone for a clever / shorter way of doing that ?
this one only works for < 9 days, but a Perl golf contest usually last < 9 days.
Terje K