Win32::Daemon::StartService () or do { my $err = "Failed to start service\n" . Win32::FormatMessage (Win32::Daemon::GetLastError ()); #### while ( SERVICE_STOPPED != ( $State = Win32::Daemon::State() ) ) { print "Daemon Service State: $State\n"; if ( SERVICE_START_PENDING == $State ) { print "Daemon Service State is starting = $State\n"; }