http://www.perlmonks.org?node_id=663163


in reply to Perl Background processes in Windows

The most portable way of doing this that I can think of is to use fork followed by exec. Consider the following:
sub run_in_bg { my $pid = fork; die "Can't fork a new process" unless defined $pid; # child gets PID 0 if ($pid == 0) { exec(@_) || die "Can't exec $_[0]"; } # in case you wanted to use waitpid on it return $pid; }
You'd call this the same way you'd call system, except now it forks a new process before running the first arg.