in reply to select and %SIG

It's actually quite easy to "continue" the select after receiving a signal, just put the select in a loop like this:
my $timeleft = 10000; while ($timeleft){ $timeleft = (select(undef,undef,undef,$timeleft))[1]; }
This works on Linux and should work on other UNIX-like OSs as well. It won't work on Windows (both ActiveState and Cygwin) since select returns the time that was passed in as $timeleft, regardless of how long you've slept.

Hope this helps.