http://www.perlmonks.org?node_id=1002517


in reply to open STDOUT to a subroutine reference?

IO::Callback to the rescue! (It's a module so cool, I couldn't stand to see it languishing unmaintained on CPAN, so I took over maintenance.)

use IO::Callback; # Here's the coderef my $code = sub { my $str = shift; print STDERR "This is really bad: $str"; }; # Turn it into a filehandle opened in write mode my $fh = IO::Callback->new('>', $code); # Select that filehandle (makes it the default for print, say, etc). select($fh); # Print something - it gets passed to the coderef! print "Hello World\n";
perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Replies are listed 'Best First'.
Re^2: open STDOUT to a subroutine reference?
by jandrew (Chaplain) on Nov 06, 2012 at 16:47 UTC

    tobyink++ yet again you have provided the answer.

    Thank you.