nattimonk:
In general, to display status on long-running operations, I use something like this:
print " \r", $status;
I often put extra blanks at the beginning when my status value isn't necessarily going to always be the same length or longer for each successive value. That way extra characters from a previous status value doesn't hang around.
However, in order to get the output to work the way you intend, you also need to ensure that the value is written immediately, otherwise your status lines may seem to hang or display in "bursts". So I also turn on automatic flushing on the output file handle. So here's a trivial example:
#!/usr/bin/perl
use warnings;
use strict;
$|=1; # Turn on automatic flushing on stdout
for (0..1000) {
my $status = substr(rand,0,5);
print " \r", $status;
sleep 5;
}
--roboticus
|