# If the write handle is a dup give it away entirely, close my copy # of it. xclose $dad_wtr if $dup_wtr; #### $ perl -MCarp=verbose a.pl open3: close(4) failed: Bad file descriptor at /usr/share/perl/5.8/IPC/Open3.pm line 70 IPC::Open3::xclose(4) called at /usr/share/perl/5.8/IPC/Open3.pm line 218 IPC::Open3::_open3('open3', 'main', '<&4', '>&STDOUT', '>&STDERR', '/bin/cat') called at /usr/share/perl/5.8/IPC/Open3.pm line 229 IPC::Open3::open3('<&4', '>&STDOUT', '>&STDERR', '/bin/cat') called at a.pl line 21 #### xclose $dad_wtr if $dup_wtr; #### if ($dup_wtr) { if (fh_is_fd($dad_wtr)) { xclose $dad_wtr; } else { xfdclose xfileno($dad_wtr); } }