build_gui(); ## sets up the gui_interface exit; sub build_gui { ## sets up a button and other widget)} ## invoked when user pressed a button sub event_handler { $handle = IO::Socket::INET->new("$host:$port"); while (<$handle>) # my program freezes here as it # waits for data in the socket { ## do stuff and then updates the GUI interface } }