open my $oldin, '<&', \*STDIN or die $!;
pipe my($r), my ($w) or die $!;
open STDIN, '<&', $r or die $!;
my $pid = system 1, 'perl -ne print';
print "pid: $pid\n";
close STDIN or die $!;
open STDIN, '<&', $oldin;
close $r or die $!;
print {$w} "hello world! ($_)\n" for 0..9;
close $w or die $!;
print "waiting for slave process\n";
waitpid $pid, 0 or die $!
####
use IPC::Open2 qw(open2);
my $pid = open2 ">&STDOUT", my($w), 'perl -ne print' or die $!;
print "pid: $pid\n";
print {$w} "hello world! ($_)\n" for 0..9;
close $w or die $!;
print "waiting for slave process\n";
waitpid $pid, 0 or die $!
##
##
open my $oldin, '<&', \*STDIN or die $!;
open STDIN, '<&', \*DATA or die $!;
my $pid = system 1, 'perl -ne print';
print "pid: $pid\n";
close STDIN or die $!;
open STDIN, '<&', $oldin;
print "waiting for slave process\n";
waitpid $pid, 0 or die $!
__DATA__
hello world! (from DATA)
##
##
my $pid = open my $w, '|-', 'perl -ne print' or die $!;
print "pid: $pid\n";
print {$w} "hello world! ($_)\n" for 0..9;
close $w or die $!;
print "waiting for slave process\n";
waitpid $pid, 0 or die $!