sub scrape_java_pids { use Win32::OLE; my $CLASS = "winmgmts:{impersonationLevel=impersonate}\\\\.\\Root\\cimv2"; my $WMI = Win32::OLE->GetObject( $CLASS ) || die "Error - failed to instantiate Win32::OLE object: $!\n"; my %jpid; foreach my $Proc ( $WMI->ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'java.exe'") ) { $jpid{ $Proc->{ProcessID} } = 1; } Symbol::delete_package("Win32::OLE"); # fork & win32::ole don't play nicely. delete $INC{'Win32/OLE.pm'}; $WMI=""; return %jpid; }