use Tk; sub tick; $MYBUILDDIR="c:\\build"; #Dont forget to backslash the backslashes $total_objects = 303; #Number of object files a full build would create $progressbar_width = 2*$total_objects; $progressbar_height = 50; $timer_interval=10; #in seconds $MW = MainWindow->new; $MW->bind('' => \&exit); $MW->bind('' => \&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($MYBUILDIR . "*.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;