in reply to patricide / matricide
you can set the program as your shell in /etc/passwd if this is the only thing you'll be executing on a givin account. Also, if the program is interrupted, you can place the getpid'ed shell's ID kill statement in the END {...} subroutine. It's not a totally sure fire way i imagine, but it appears that even if the user ^C terminates the program, then anything in END {...} (err. handling, etc) will be executed. Of course, this doesn't apply to ^Z suspention. You could use signal handlers (as already mentioned) which would probably garantee proper termination much more than END will.