#!/opt/perl5/bin/perl -w use strict; sub best_int { use integer; my $s = shift; return sprintf ":%02d", $s if $s < 60; my $m = $s / 60; $s = $s % 60; return sprintf "%02d:%02d", $m, $s if $m < 60; my $h = $m / 60; $m %= 60; return sprintf "%02d:%02d:%02d", $h, $m, $s if $h < 24; my $d = $h / 24; $h %= 24; return sprintf "%d:%02d:%02d:%02d", $d, $h, $m, $s; } sub best { my $s = shift; return sprintf ":%02d", $s if $s < 60; my $m = $s / 60; $s = $s % 60; return sprintf "%02d:%02d", $m, $s if $m < 60; my $h = $m / 60; $m %= 60; return sprintf "%02d:%02d:%02d", $h, $m, $s if $h < 24; my $d = $h / 24; $h %= 24; return sprintf "%d:%02d:%02d:%02d", $d, $h, $m, $s; } sub husker { my ($out_m, $hold_sec, $out_str, $in_sec, $out_d, $out_h, $out_s); $in_sec=shift; $hold_sec = $in_sec; $out_d = $in_sec / 86400; $in_sec = $in_sec % 86400; $out_h = $in_sec / 3600; $in_sec = $in_sec % 3600; $out_m = $in_sec / 60; $in_sec = $in_sec % 60; $out_s = $in_sec; if ($out_d > 0) { $out_str = sprintf "%0.f:%0.2u:%0.2u:%0.2u", $out_d, $out_h, $out_m, $out_s; } elsif ($out_h > 0) { $out_str = sprintf " %0.2u:%0.2u:%0.2u", $out_h, $out_m, $out_s; } elsif ($out_m > 0) { $out_str = sprintf "%0.2u:%0.2u", $out_m, $out_s; } else { $out_str = sprintf ":%0.2u", $out_s; } return $out_str; } sub adam { use integer; my $sec = shift; return ":0$sec" if $sec < 10; return ":$sec" if $sec < 60; my $min = $sec / 60, $sec %= 60; $sec = "0$sec" if $sec < 10; return "$min:$sec" if $min < 60; my $hr = $min / 60, $min %= 60; $min = "0$min" if $min < 10; return "$hr:$min:$sec" if $hr < 24; my $day = $hr / 24, $hr %= 24; $hr = "0$hr" if $hr < 10; return "$day:$hr:$min:$sec"; } sub blaise { my $sec = shift; my @str; use integer; for my $d (60, 60, 24) { my $m = $sec % $d; $sec /= $d; $m = '0'.$m if $m < 10; unshift @str, $m; } return "$sec:".join ":",@str; } sub fund { my $t = shift; my @out=reverse ($t%60, ($t/=60)%60, ($t/=60)%24, ($t/=24) ); my $out=sprintf "%03d:%02d:%02d:%02d", @out; $out=~s/^0+:|00://g; return $out; } sub ncw { my $seconds = shift; my $string = join ":", map { sprintf "%02d", $_} (gmtime($seconds))[7,2,1,0]; $string=~s/\G00://g; return $string; } my ($s, $i, $x, $m, $a, $r, $f, $b, $n); for $s (1,5,100,10000,1000000,100000000, 3000000000) { $i=best_int($s); $m=husker($s); $a=adam($s); $b=blaise($s); $f=fund ($s); $n=ncw($s); $x=best($s); write(); } format STDOUT_TOP= seconds best_int best husker
------------- ------------- -------------- -------------
-------------- -------------- -------------- --------------- . format STDOUT = @############ @>>>>>>>>>>>> @>>>>>>>>>>>>> @>>>>>>>>>>>>> @>>>>>>>>>>>>> @>>>>>>>>>>>>> @>>>>>>>>>>>>> @>>>>>>>>>>>>>> $s,$i,$x,$m,$a,$b,$f,$n .