http://qs1969.pair.com?node_id=433914


in reply to Delete files every 5 sec. Register as Win Service

use strict; use Win32::Daemon; # Tell the OS to start processing the service... Win32::Daemon::StartService(); # Wait until the service manager is ready for us to continue... while(SERVICE_START_PENDING != Win32::Daemon::State()) { sleep(1); } # Now let the service manager know that we are running... Win32::Daemon::State( SERVICE_RUNNING ); # Okay, go ahead and process stuff... while(1) { # delete all *.tmp files at c:\temp unlink( glob( "c:\\temp\\*.tmp" ) ); last unless keep_alive(); sleep(5); # and wait last unless keep_alive(); } # Tell the OS that the service is terminating... Win32::Daemon::StopService(); sub keep_alive { my $msg = Wun32::Daemon::QueryLastMessage(); return ( $msg != SERVICE_STOP_PENDING and $msg != SERVICE_CONTROL_SHUTDOWN ); }
Update1:
look at Win32::Daemon to see how to install the service
Update2:
Added the $sunning and QueryLastMessage part
Update3:
replaced Update2 by sub keep_alive