use Win32::Process; # First file spawn_server.pl #===================== V Added 1 V ============================== use IO::File ; my $savein = new IO::File ; #===================== A Added 1 A ============================== %Data = ( one =>1, two =>2, three =>3 ); pipe(READ, WRITE); select(WRITE); $| = 1; select(STDOUT); #===================== V Changed 1 V =============================== #$savein->open ( "< &STDIN" ) || die "Can not save STDIN\n"; open(SAVEIN, "< &STDIN") || die "Can not save STDIN\n"; #===================== A Changed 1 A =============================== 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:\\db2maint\\cmd\\perl\\spawn_client.pl", 1 , NORMAL_PRIORITY_CLASS , "c:\\db2maint\\test" ); #===================== V Changed 2 V =============================== #open(STDIN, "< &savein"); open(STDIN, "< &SAVEIN"); #$savein->close () ; close(SAVEIN); #===================== A Changed 2 A =============================== 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"; #### # Separate file - spawn client. 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";