again, i agree that my question was probably not accurate enough. the best way to describe my problem would be a DFD, but oh well...
the thread thing will probably help me. the problem i have with sleep (Win32::sleep, usleep, etc) is that it blocks other interaction with eg checkbuttons, scales etc in the MainLoop()
Ah, see there's always more to it. If you are in a GUI application, you have an event loop. If you have an event loop, you could schedule your timeout or delay with that event loop rather than using sleep, etc. For example, if you're using tk, then look at the bind method (perldoc Tk::bind).