Are you running 5.8.x? Then you might be bitten by 'safe
signals'. Delivery of signals is delayed until the next
time Perl dispatches an op - and that might not happen
until the sleep is finished. This is a problem on some
OSses (I haven't been able to reproduce it under Linux),
and therefore there's a fix in 5.8.1. By setting an environment variable (look at perldelta for the details),
you can get the old behaviour back.
Abigail