tie *STDOUT, TrapClass; print("foo\n"); my $pid = fork(); die "fork: $!\n" if !defined $pid; if ($pid) { waitpid($pid, 0); print STDERR tied(*STDOUT)->get_buf(); # foo only } else { print("bar\n"); } package TrapClass; sub TIEHANDLE { my $class = shift; my $buf = ''; bless \$buf, $class; } sub PRINT { my $self = shift; $$self .= join($,, @_) . $\; } sub get_buf { my $self = shift; return $$self; }