# setup glib loop our $loop = Glib::MainLoop->new(undef,0); # handle tk events sub tk_loop { my $c = Tk::MainWindow->Count; if ($c) { 1 while (DoOneEvent(ALL_EVENTS | DONT_WAIT)); } else { $loop->quit; # quit glib loop if GUI is closed } $c; } Glib::Timeout->add(5,\&tk_loop); # call tk_loop every 5 ms $loop->run;