use Filter::Handle qw/subs/; . . . Filter \*STDOUT, sub { local $_ = "@_" print "$_\n"; $_}; #### Deep recursion on subroutine "Filter::Handle::PRINT" at /lib/myfiltermodule.pm line 19 (#1) (W recursion) This subroutine has called itself (directly or indirectly) 100 times more than it has returned. This probably indicates an infinite recursion, unless you're writing strange benchmark programs, in which case it indicates something else. Deep recursion on anonymous subroutine at /lib/Filter/Handle.pm line 42.