Perl's fork emulation on Windows generates negative
pseudo-process IDs which are valid. fork will only return
undef if there is an error, a negative
number does not indicate an error, so you shouldn't treat it as such.
update:
for more information on Windows fork emulation you can of course check out
perlfork.