Yes, FWIW a few years back I found Win32::Job the least painful way to solve my problem
of running a command for a specified period of time, then killing it.
I originally did a sigalarm-based Unix version (in Timing and timing out Unix commands);
the final Win32::Job-based Windows version can be found in Re: Timing Windows commands.
Completely different code for each platform, which is ugly. However, I've found nothing but pain with signals on Windows and always avoid them on that platform, in both Perl and C. Note that the native Win32 API has no concept of signals.