my %services; Win32::Service::GetServices("", \%services); while ( my ($k,$v) = each %services ) { print "$k\t$v\n"; my %status; Win32::Service::GetStatus("", $v, \%status); while ( my ($k,$v) = each %status ) { print "\t$k\t$v\n"; } }