Use
Win32::Process:Info - here's some working code that I use in some production scripts, you can tailor it to do exactly what you want, but this should give you some ideas of the syntax.
use strict;
use warnings;
use Win32::Process::Info;
Win32::Process::Info->Set (variant => 'WMI'); #Force to use WMI (quick
+er)
my $pi = Win32::Process::Info->new(); #Enumerate all the PIDs
my $everest_process = undef;
#For each PID, grab its name and look for everest processes
for ( $pi->ListPids )
{
my ($info) = $pi->GetProcInfo ($_);
if ( $info->{Name} =~ /everest/gi ) { $everest_process = 1; }
}