in reply to How to fork %comspec% in win32 perl

The environment variables are stored in the %ENV hash in Perl.

So what you want to do is:

my $filename = 'c:\\somefile'; my @input = `$ENV{COMSPEC} /c type "$filename"`;

Of course, that is silly, because there is little sense in calling an external program just to read a file when Perl has lots of ways to read a file directly:

my $filename = 'c:\\somefile'; open my $fh, "<", $filename or die "Couldn't read '$filename': $!"; my @input = <$fh>;

If you want to start another Perl script, you best invoke perl with the other script. The name of the current Perl interpreter is stored in the $^X variable:

system($^X,"-w","path/to/other/script.pl");

You talk about "fork", but I'm not sure whether you want to use fork, exec, system or qx, which all are different ways of invoking programs. Note though that fork likely doesn't do what you want and it doesn't work well enough on Win32 anyway.