in reply to Perl script as Windows Service
Have you written your script specifically as a service? On Windows a service has to communicate with the Service Control Manager(SCM). The Services GUI is just a way of asking the SCM to do things.
Think of the SCM as your Mother (OK, or Father) - when starting up you must tell her how long you are going to take over each startup phase, and if you take too long she panics and thinks you have died. That is what seems to have happened here. Did you specify a long enough period between each startup checksum? Did you remember to set the service status?
The SCM also asks you to do things from time-to-time (Suspend, Resume, Shutdown) or even if you are OK. Again, a failure to respond in a timely manner throws the old dear into a flap.