1#!./perl 2 3BEGIN { 4 if ($^O eq 'VMS') { 5 print "1..0 # Skip: needs porting, perhaps imitating Win32 mechanisms\n"; 6 exit 0; 7 } 8 require "../../t/test.pl"; 9} 10use strict; 11use warnings; 12 13plan 3; 14 15# [perl #76474] 16{ 17 my $stderr = runperl( 18 switches => ['-MIPC::Open3', '-w'], 19 prog => 'open STDIN, q _Makefile_ or die $!; open3(q _<&0_, my $out, undef, $ENV{PERLEXE}, q _-e0_)', 20 stderr => 1, 21 ); 22 23 is $stderr, '', 24 "dup STDOUT in a child process by using its file descriptor"; 25} 26 27{ 28 my $want = qr/\A# This Makefile is for the IPC::Open3 extension to perl\.\r?\z/; 29 open my $fh, '<', 'Makefile' or die "Can't open MAKEFILE: $!"; 30 my $have = <$fh>; 31 chomp $have; 32 like($have, $want, 'No surprises from MakeMaker'); 33 close $fh; 34 35 fresh_perl_like(<<'EOP', 36use IPC::Open3; 37open FOO, 'Makefile' or die $!; 38open3('<&' . fileno FOO, my $out, undef, $ENV{PERLEXE}, '-eprint scalar <STDIN>'); 39print <$out>; 40EOP 41 $want, 42 undef, 43 'Numeric file handles are duplicated correctly' 44 ); 45} 46