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


in reply to Re: Redirecting STDOUT from internal function with 5.6.1 restrictions
in thread Redirecting STDOUT from internal function with 5.6.1 restrictions

For a minute there I thought you were on to something, but
alas it turned out to be an incorrect assumption. Here is
how I see it...

In the code Test module Test.pm 'makes a copy' of the STDOUT filehandle

$TESTOUT = *STDOUT{IO};
This has the same effect as below:
open( TESTOUT, ">&STDOUT" ) || die "dup failed";
In either case Perl comes back complaining that: "A file or directory in the path name does not exist at ...". Which means that the last parameter in the 5.6.1 version of open must point to a string with a path/filename. mgc

Replies are listed 'Best First'.
Re^3: Redirecting STDOUT from internal function with 5.6.1 restrictions
by Jenda (Abbot) on Oct 12, 2004 at 19:30 UTC

    OK then. I should have tested my suggestions. Anyway this does seem to work fine in Perl 5.6.1:

    use FileHandle; use Test; plan(tests => 3); ok("first"); { local $Test::TESTOUT; open $Test::TESTOUT, '>', "$ENV{TEMP}/zkTestRedirect.txt"; ok("second"); } ok("third");

    Jenda
    We'd like to help you learn to help yourself
    Look around you, all you see are sympathetic eyes
    Stroll around the grounds until you feel at home
       -- P. Simon in Mrs. Robinson

      Thanks for the input. It seems thought, your example is still writing to a file. I am trying to trap STDOUT and redirect to a variable(memory).

      mgc