On my server (Linux 2.2.16 - Perl 5.005_03) the select command aborts whenever a SIG (that I have caught) is sent to the running process. For example, if I do:
#!/usr/bin/perl
$SIG{CHLD} = sub{ print "Got $_[0]\n"; };
print $$,"\n";
select(undef,undef,undef,10000);
print "all done\n";'
And then do a kill -CHLD <pid>, the select doesn't continue. I am sure that there might be a flag that I can set that will let this continue with the rest of the timeout that it had. However, I love the fact that it shortcuts the timeout -- this opens up many posibilities and simplifies life quite a bit -- it maybe even help to write a SIG safe system on old perls.
I am mostly wondering if this is consistent across platforms (Solaris, BSD, Linux, OSX, Windows, etc).
my @a=qw(brilliant braindead); print $a[rand(@a)];