Ah Yes, I had this problem before, here's a
quick-and-dirty progress bar script that uses and example
#progress bar that monitors a compile,
#by counting .o's periodically
use Tk;
sub tick;
$total_objects = 303;
$progressbar_width = 2*$total_objects;
$progressbar_height = 50;
$timer_interval=10; #in seconds
$MW = MainWindow->new;
$MW->bind('<Control-c>' => \&exit);
$MW->bind('<Control-q>' => \&exit);
$canvas1 = $MW->Canvas(
'-width' => $progressbar_width,
-height => $progressbar_height,
-background => 'black'
) -> pack;
$newval = 10;
$start = $MW->Button(
-text => 'Start',
-command => sub {tick},
);
$start->pack(-side => 'left', -fill => 'both', -expand => 'yes');
sub tick {
# Update the counter every 5 seconds
$MW->after($timer_interval * 1000, \&tick);
$num_objs = @objects = glob("\\as900\\code\\build\\*.o");
print "\n$num_objs out of $total_objects built so far...";
$newval = ($num_objs / $total_objects)*$progressbar_width;
$canvas1->create ('rectangle','0','0',$newval,$progressbar_height,
+-fill=>'red');
}
MainLoop;
This gives you the capability of a timer callback.
Desert coder