NAME

Chj::xIO - some IO utilities

SYNOPSIS

use Chj::xIO qw(
   capture_stdout capture_stdout_
   capture_stderr capture_stderr_
   );

is capture_stdout { print "Hi!" }, "Hi!";
is substr(capture_stderr { warn "nah" }, 0,3), "nah";

# if you want to avoid the '&' prototype:
is capture_stdout_(sub { print "Hi!" }), "Hi!";

DESCRIPTION

Oh, but there's Capture::Tiny ! Even uses the same names. TODO: move to that. Although, Capture::Tiny might be using 'dup', which would not be thread safe. Shrug.