There are some Win32 modules that could come in handy for this.
Win32::Service <- List, start, stop services
Win32::Eventlog <- Assuming that it writes to the event log
If all you want to do is restart the service when it crashes, you can do that from within Windows - just set the recovery option on
N failure to restart the service. Why bother reinventing a fully functional wheel?
You may also want to check the
ActiveState Mailing Lists for people that have done this sort of thing before. Particularily the perl-win32-admin list.