#!/usr/bin/perl
# return.pl
print STDERR "err1!\nerr2!\n";
print STDOUT "out!\nout again!\n";
exit 1;
####
#!/usr/bin/perl
# test1.pl
use IPC::Open3;
$n = "\n";
open( OUTPUT, ">&STDOUT" ) or
die "Can't dup STDOUT to OUTPUT: $!$n";
open( OUTERR, ">&STDERR" ) or
die "Can't dup STDERR to OUTERR: $!$n";
eval { $pid = open3("<&STDIN", \*OUTPUT, \*OUTERR, 'perl return.pl') };
$@ && die "ERROR: $@$n";
@results = ##
---pid
1480
---$?
1480
---results
out!
out again!
---errors
err1!
err2
####
#!/usr/bin/perl -w
# test2.pl
$n = "\n";
eval{
open( OUTPUT, "+>&STDOUT" ) or
die "Can't dup STDOUT to OUTPUT: $!$n";
open( OUTERR, "+>&STDERR" ) or
die "Can't dup STDERR to OUTERR: $!$n";
$return = system('perl', 'return.pl');
chomp ( @results = ##
err1!
err2
out!
out again!
---return
1
---results
---errors