I'm using Win32::Daemon for a Win32 Service too on Windows Server 2003. There seems to be a problem with using threads and Win32::Daemon.
Let me know if you find out more. I'm currently on another project at work, but will return to the Perl script Windows Service in January.
So far Win32::Daemon works great. It just doesn't seem to play well with threads. Also the service never restarts if it crashes.