Revision history for IPC::Exe 2.002001 2011/11/14 + Added syntax sugar: @REDIRECTS can be specified after LIST. + Redirects may be specified with file descriptors > 2. They refer to temporary filehandles that may be used for intermediate redirection. Those filehandles do not necessarily have the same fd fileno. - A &READER that dies will not leave STDIN in a bad state. - Better localization of error variables. 2.001001 2011/10/22 + Able to pass scalar references to \%EXE_OPTIONS for 'pid', 'stdin', 'stdout', and 'stderr' options. Each referenced scalar will be assigned its corresponding value and will not be returned by exe(). + &PREEXEC can return array references to perform open(). If references to array refs are returned, perform sysopen() instead. + Added taint checking. + Raised minimum Perl version required to v5.8.8. This is for better handling of filehandles and PerlIO layers. + Changed release to semantic versioning. - Pass along $@ upon each call to exe(). Do not modify $@ for bg(). 1.010 2010/07/25 - Pass along $! and $^E upon each call to exe(). Do not modify $?, $! and $^E for bg(). - Hopeful robustness improvements for non-Unix. 1.009 2009/10/03 - Do not wait on child with returned STDOUT/STDERR filehandles. - Removed dependency on POSIX module. - Minor pod rearrangement. 1.008 2009/05/13 - Added: arguments, exit_waitpid and exit_close_pipe tests. - Changed: tests no longer use ualarm() because it is unavailable sometimes. - Further improvement of non-Unix quoting. - Cleaned up aliasing code. - Tried another fix for smoke test failures duplicating STDIN. 1.007 2009/05/05 - Changed: removed POSIX::_exit() because it got in the way of threads. Unfortunately, END blocks are performed as a result of die() or exit(). I haven't found a reliable way to avoid END blocks inside a thread. Addressed by updating CAVEAT section in pod. - Added: $IPC::Exe::is_forked to tell if code is not in main process/thread. Added is_forked test. - Fixed: smoke test failures duplicating STDIN. We'll see if the fix works. - Added: check for undef values in LIST. Added undef_cmd test. - Minor pod corrections. 1.006 2009/05/02 - RT #45413: A chain of trivial scripts is stuck under Win2k, works under Linux Threaded fork-emulation has limitations. Addressed by updating CAVEAT section in pod. Added *_pipe tests to account for this. - RT #45263: wrong constant intermediate exit code Fixed: $? was getting clobbered by waitpid(). Added exit tests. - &READER is now called with ($child_pid, LIST) as arguments. $child_pid allows waitpid($_[0], 0); to be called in &READER to set $? - Deprecated 'exec' option in %EXE_OPTIONS. No more use of system(). - Changed: improved non-Unix quoting. Added quoting test. - Added: manually flush STDERR/STDOUT after &PREEXEC. - Added: use POSIX::_exit() upon failed exec to avoid calling END blocks. - Added: use lib "../lib"; to examples/*.pl - Minor changes to "README" and "Makefile.PL". 1.005 2009/04/21 - Fixed: unknown open() mode '>&' to be compatible with Perl 5.6+. - Minor changes. - Added: LICENSE to "META.yml". 1.004 2009/04/20 - Fixed: found = in conditional, should be ==. use warnings; doesn't understand what I mean. 1.003 2009/04/20 - Changed: exec() failure code sequence. - Fixed: unknown open() mode '<&' to be compatible with Perl 5.6+. - Fixed: minor mistakes in pod. - Added: PREREQ_PM for POSIX module. 1.002 2009/04/17 - Fixed: barewords STDIN/STDOUT/STDERR while "strict subs". - Extracted examples into new EXAMPLES section in pod. - Included "META.yml" in dist. - Extracted license info from "README" into its own file "LICENSE". - Skip 'background' test in "02_IPC-Exe.t" if not in DEBUG mode. Testing bg() requires manual inspection. 1.001 2009/04/02 - Initial revision.