in reply to Problems with uninitialized value

foreach my $Service ( in($Services)) { if(defined $Service_Info{ $Service->{DisplayName} }) {
It seems that $Service may be defined but it's not a hash reference or it is and doesn't have the key DisplayName. I'm just guessing, since I don't have a Win32 Perl to try.

I'd give a try to perl debugger (perl -d script.pl) or use Data::Dumper to print debug messages with the content of $Service.