Well I got some good answers in the perl-gtk IRC channel.
11:59:09 <metaperl> i'm wondering about alternatives to threads for keeping a perl/gtk app responsive - http://perlmonks.org/index.pl?node_id=928823
12:03:31 <LotR> simple. don't do anything that takes more than a few microseconds :) and if you do, split it up in tiny pieces and stick those in an idle handler.
12:03:34 <LotR> also, see POE
12:32:49 xiong ~email@example.com has quit IRC: Ping timeout: 600 seconds
12:41:57 xiong ~firstname.lastname@example.org has joined #gtk-perl
12:46:31 <metaperl> i'm wondering about alternatives to threads for keeping a perl/gtk app responsive - http://perlmonks.org/index.pl?node_id=928823
12:46:43 <metaperl> oh sorry
12:46:46 <metaperl> for the repeat
12:46:52 <metaperl> My window was smushed down
12:47:20 <metaperl> lotr - what is an idle handler? is this documented somewhere?
12:49:21 <metaperl> this looks relevant - http://search.cpan.org/~rcaputo/POE-Loop-Gtk-1.305/lib/POE/Loop/Gtk.pm
13:09:56 <squentin> metaperl: Glib::Idle->add(\&my_function) see http://gtk2-perl.sourceforge.net/doc/pod/Glib/MainLoop.html