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";