in reply to How do I print formatted text to a scalar instead of a filehandle?
package Catch; sub TIEHANDLE { my($class, $var) = @_; return bless { var => $var }, $class; } sub PRINT { my($self) = shift; ${'main::'.$self->{var}} .= join '', @_; } sub OPEN {} # XXX Hackery in case the user redirects sub CLOSE {} # XXX STDERR/STDOUT. This is not the behavior we want +. sub READ {} sub READLINE {} sub GETC {} package main; # pre-5.8.0's warns aren't caught by a tied STDERR. $SIG{__WARN__} = sub { $main::_STDERR_ .= join '', @_; }; tie *STDOUT, 'Catch', '_STDOUT_' or die $!; tie *STDERR, 'Catch', '_STDERR_' or die $!;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Answer: How do I print formatted text to a scalar instead of a filehandle?
by MidLifeXis (Monsignor) on Oct 29, 2008 at 19:53 UTC |