in reply to perl alarms not working as expected

Well, it works for me when I run it in the shell. However I see that you seem to be running it as a CGI script. The web server is probably waiting for that shell script to finish, because the shell script still has an open file handle to your standard output.

You should try killing the other script from your signal handler.