#! /usr/bin/perl -s use Time::HiRes qw|sleep time| ;$k=11;$k=$ARGV[0]if$ARGV[0];$g=atan2 (1,1)/7.5;$e=4*$k;$d=2*$k+1;@r=(0..2*$d);sub p{printf@_} sub b{ return "\e[1m". pop."\e[0m"} ;$| =p"\e[?25l". "\e[H\e[J";$SIG {'INT'} =sub {p"\e[?12l" ."\e[?25h" ."\e" ."[%" ."dH\e[J", $d+2;exit ;}; @c= map{[map{ " "}@r]}( 0..2*$d); @m=map{[ @{$c[$_] }]}@r;sub c{($b,$o,$q) =@_;$c[$k-$o* cos ($b*$g)+.5][$k+$o *sin($b* $g)+.5]=$q;} for$x (0..$k){$y =int( sqrt($k **2-$x**2)+ .5);$c[$k-$x][ $k-$y] =".";$c [$k+$x][$k-$y] =".";$c[$k-$x][ $k+$y]= ".";$c [$k+$x][$k+$y] =".";$c[$k-$y][$ k-$x]= ".";$c[ $k+$y][$k -$x]=".";$c[$k-$y][$k+$x ]=".";$ c[$k+$y ][$k+$x]="."};map{c$_*5,$k,b$ _}(1..12 );@p=map{[@{$ c[$_]}]}@r;while(::){ @t=localtime ;p"\e[H\e[1;" .${e}."H%02d\e[${d }H%02d\e[${d };${e}" ."H%02d",$t[2],$t[1] ,$t[0]; @c=map {[@{$p[$_]}]}(0.. 2*${d}) ;for$i ('H:' ."65:" ."5:2:4" ,"M:78:" . 1 .":1:2" ,"s:87" .":1:0" .":6"){ ($ l, $n,$j,$ s,$f)=split":" ,$i;if ($a){$h =0;map{$h=$h /60+$t[$_]}( 6*0..$s) }else{$h =$t[$s] };map{c $j*$h,$_, b( "" ."\e[3${f }m$l")}(do {$s? 1:$n }/100*$k.. $n/100*$k) ;}$c [$k ][$k ]=b((".","" ."+","*","o"x1, "O" )[$t[.0]%5]); for$x(@r){for $y( @r){$m[$ x][$ y]ne$c[$x][$y]?p"\e[%d;%dH".$c[$x][$y],$x+1,2 *$y+1:''};};@m=map{[@{$c[$_]}]}@r;p"\e[" ."H\e[7mS\e[0m";sleep 1.01-$1if time=~/(\..*)$/;}