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


in reply to Filehandle Filter

I like this, a lot. It could be a CPAN module if someone (push me and I'll do it) provided a mechanism where you could specify the output. Here's how I got around the tie-untie reference problem:
package Filter::Handle::Tie; use vars qw/@ISA/; use Tie::Handle; @ISA = qw/Tie::Handle/; sub TIEHANDLE { my $class = shift; my $fh = shift; bless { fh => $fh }, $class; } sub PRINT { my $self = shift; my $fh = *{ $self->{fh} }; my($file, $line) = (caller)[1,2]; print $fh sprintf "%s:%d - %s\n", $file, $line, join ' ', @_; }
This avoids the deep recursion by not printing to a tied filehandle -- it's copied by dereference before printing to it.

Maybe users could pass in a subref with stuff they want to print instead. Interesting idea.