Take a look at
https://git.launchpad.net/unrarextractrecover/diff/script/gui.pl?id=b326ba775652a0e320eacb005ee9b2e5fbd95db4
for a complete application/example that updates the progress bar through a thread queue
The relevant code is along those lines:
while (Tk::MainWindow->Count) {
if (my $queue_message=$main::worker_to_boss_queue->dequeue_
+nb) {
my ($message,$no)=@$queue_message;
given ($message) {
when ("allfiles") {
$gui::percent_done=0;
$gui::_progress->configure(-to => $no);
}
when ("update") {
$gui::percent_done += 1;
}
when ("end") {
$gui::percent_done += 1;
enable_buttons();
}
}
}
DoOneEvent(ALL_EVENTS);
}
}