use Win32::Service qw'GetStatus'; use strict; use POSIX; my @state_name = qw( Stopped START_PENDING STOP_PENDING Running CONTINUE_PENDING PAUSE_PENDING PAUSED ERROR ); my $filename = 'D:/log_script/recycle/StartupSvcList.txt'; open FILE, '<', $filename or die "cannot open"; while (){ GetStatus("", $servicename, \%status); my $state_no = $status{'CurrentState'}; printf MYFILE " ServiceStatus: %s %s %s \n", "", $servicename, $state_name[$state_no]; } close(MYFILE);