use Win32::Process; %Data = ( one =>1, two =>2, three =>3 ); pipe(READ, WRITE); select(WRITE); $| = 1; select(STDOUT); open(SAVEIN, "< &STDIN") || die "Can not save STDIN\n"; open(STDIN, "< &READ") || die "Can not redirect STDIN\n"; select(STDIN); $| = 1; select(STDOUT); Win32::Process::Create($Proces, c:\\perl\\bin\\perl.exe", "c:\\perl\\bin\\perl.exe c:\\perl\\test\\client.pl", 1, NORMAL_PRIORITY_CLASS, "c:\\perl\\test"); open(STDIN, "< &SAVEIN"); close(SAVEIN); close(READ); print "$0: Sending variables to child...\n"; foreach $Temp (keys(%Data)){ print "$0:\t$Temp=$Data{$Temp}\n"; print WRITE "\$Data{$Temp}=$Data{$Temp};\n"; } print "$0: Finished sending variables.\n"; close(WRITE); print "$0: About to terminate. Waiting for to be hit...\n"; ; print "$0: End.\n";