I use
daemontools to solve this problem. It's not itself a perl program, but it is perfectly happy to supervise one; I use it that way all the time. I like that I can run most of my servers under it, and manage them all exactly the same way, including their logging.