Since you are running on windows, fork() isn't exactly forking a new process, it forks a pseudo-process. However it looks to be correct if you want to spawn multiple copies of the same script. When the original script terminates so do the child processes as they live in the memory of the parent process. One way to get around this is to use
Win32::Process with the DETACHED_PROCESS flag, if you want the children to live on.