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