open (my $SAVEDIN, '<&', STDIN ) or die "$!"; my ($READ, $WRITE); pipe( $READ, $WRITE ); open ( STDIN, '<&', $READ ) or die "$!"; my $winproc; Win32::Process::Create( $winproc, 'C:\\perl\\bin\\perl.exe', 'myscript.pl', 1, # inherit handles '.' ) or die "Process did not start"; open( STDIN, '<&', $SAVEDIN ) or die "$!"; #### use Win32::Process; %Data = ( one => 1, two => 2, three => 3, ); pipe(READ, WRITE); select(WRITE); $| = 1; select(STDOUT); open(SAVEIN, "<&STDIN") || die "Can't save STDIN\n"; open(STDIN, "<&READ") || die "Can't redirect STDIN\n"; select(STDIN); $| = 1; select(STDOUT); Win32::Process::Create( $Process, "c:\\perl\\bin\\perl.exe", "tpjclient.pl", 1, NORMAL_PRIORITY_CLASS, "." ); 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 ...\n"; ; print "$0: End.\n"; #### print "$0: Starting.\n"; print "$0: Reading in variables...\n"; while() { eval($_); print "$0: \t$_"; } print "$0: Finished reading variables.\n"; print "$0: Dumping variables...\n"; foreach $Temp (keys(%Data)){ print "$0:\t$Temp=$Data{$Temp}\n"; } print "$0: End.\n";