redirecionando stdin / stdout do processo exec'ed para canalizar no Perl

Estou tentando fazer com que STDOUT / STDERR de um processo filho executado volte ao pai por meio de um pipe no Perl. O mais próximo que vi do que quero fazer é:http://forums.devshed.com/perl-programming-6/exec-and-redirecting-stdout-stderr-168501.html

A seguir, é apresentado um exemplo simplificado do que estou tentando fazer. Eu também tentei uma variante do link acima. Não vejo o que estou fazendo de errado ...

#!/usr/bin/env perl

use strict ;
use warnings ;

my $cmd    = "/usr/bin/who -a" ;  # anything to stdout

pipe( READER, WRITER ) ;
my $child = fork() ;
if ( $child ) {
    print "I am the parent: My pid = $ junior = $child\n" ;
    close( WRITER ) ;
    my @output = <READER> ;
    print @output ;
    print "parent is DONE\n" ;
} else {
    print "I am the child. My pid = $\n" ;

    close( READER ) ;
    close( STDOUT );
    close( STDERR );
    *STDOUT = *WRITER ;
    *STDERR = *WRITER ;

    print WRITER "XXX ouput before exec....\n" ;

    exec( $cmd ) or exit(1) ;
}

questionAnswers(3)

yourAnswerToTheQuestion