in reply to Tk, LWP, and blocking?

One more idea, not sure you would want to modify LWP (or subclass it if possible...)

You would probably need to make LWP use non-blocking sockets and also use select(). You would then have to do your own timeout loop and callback into your program to that you could call Tk::DoOneEven(ALL_EVENTS) to ensure the GUI keeps ticking

Probably not too hard if you know socket communication, but likely not simple ;-)