sub MainLoop { unless ($inMainLoop) { local $inMainLoop = 1; while (Tk::MainWindow->Count) { DoOneEvent(0); } } } #### use Tk; my $pb = launch_progress(); for(1 .. 100) { $pb->value($_); DoOneEvent(0); select undef, undef, undef, 0.06; warn $_,$/; } undef $pb; exit; sub launch_progress { my $main_window = Tk::MainWindow->new; my $tk_progressbar = $main_window->ProgressBar( -width => 20, -height => 300, -from => 0, -to => 100, )->pack( -fill=>"x", -pady => 24, -padx => 8 ); my $c = 0; while (Tk::MainWindow->Count and $c < 10) { DoOneEvent(0); $c++; } return $tk_progressbar; }