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
$$percent_done_reference = 100*($total_size - $self->_readDataRemaining)/$total_size; and then update the window
$window_handle->update();. 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. :)
Again, thanks for the help!
Arden