Thanks all for your help. I've gotten around my problem for this particular case by delving deep into other people's modules. Basically, I re-wrote the Archive::Zip module so that I could pass it two new variables ($window_handle & $percent_done_reference). Then, after every chunk of data is written out to file, I redo the math for percentage done
. The update happens often enough that my program very rarely falls into "Not Responding" status. I happen to also be using the $percent_done variable in a progress bar. :)