in reply to Binary Clock

As far as making the clock update exactly every second, I would probabaly just insert a sleep 1 in the program and call it close enough. In order to make the clock increment exactly on the second, you'd have to figure out how long the code took then sleep for 1 second minus that time. That just seems like too much work to me.

As for updating the clock, why not just clear the screen and redraw it? The Perl Cookbook suggests doing $clock = `clear`; and then just print $clear; whenever you want to clear the screen. It also provides a longer way, although its advantage isn't clear to me at this moment:
use Term::Cap; $OSPEED = 9600; eval { require POSIX; my $termios = POSIX::Termios->new(); $termios->getattr; $OSPEED = $termios->getospeed; }; $terminal = Term::Cap->Tgetent({OSPEED=>$OSPEED}); $terminal->Tputs('cl', 1, STDOUT);
For some general framework, look at what I did here:
$clear = `clear`; while (1){ print $clear; $time = localtime(); print "$time\n"; sleep 1; $l++; }
It provides a fairly smoothly incrementing clock. You should be able to do something similar with the more complex output you're talking about. Notice how I'm just clearing the screen and redrawing the clock each time?

And finally, as far as using blocks, why not just use extended ASCII code 219, which is a block character, in place of the asterisks? Hope this helps!