I'm using the Win32::Process::Create to initiate an outside process from my Tk gui. Now, if the user clicks on a particular button, I want the code to say:

if(processid is still running){ ... do this } else{ ... do that }

However, all the methods that seem to make sense to me, aren't really working. Win32::Process::GetProcessID returns the PID of the process, BUT in checking the process id w/ this method after the process is dead, it still returns the same thing: the process id. In reality (read: my illusion) The process is done with... and I would think would return null or something. Is there a simple Stat function so I can see the stats of all the processes? Something like ps -ef on UNIX?

So I guess you only want to know about whether the process is still running or it has finished. You can use the GetExitCode method of Win32::Process. It maps to Window's GetExitCodeProcess API call (at least I assume that, I haven't looked at the source). This will set the variable you supplied to the exit code of the process if it has yet finished or to STILL_ACTIVE if the process is still running. Unfortunately, STILL_ACTIVE isn't exported by Win32::Process. If you have a Windows C compiler, you can have a look at the include files winbase.h and winnt.h. In these files, STILL_ACTIVE is defined to be STATUS_PENDING and STATUS_PENDING to be 0x00000103. So as long as Microsoft doesn't change their include files (which I don't think will happen), you can assume 259 to be the same as STILL_ACTIVE.