The problem is that open() is waiting for the process to finish, before returning control to your program. There is an easy solution to what you're trying to do. Check out
perlwin32faq5 talks about what functions are not supported in the Win32 environment. Here's a
to the FAQ (which for some reason, I can't find on the ActiveState site...). Also, the ORA 'Learning Perl on Win32 Systems' book doesn't not mention fork() anywhere in it.