Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

How to restore from redirecting STDOUT to variable?

by anaconda_wly (Scribe)
on Jan 17, 2013 at 02:36 UTC ( #1013683=perlquestion: print w/ replies, xml ) Need Help??
anaconda_wly has asked for the wisdom of the Perl Monks concerning the following question:

I use code below directing output to $output, and I can't see screen display any more. How can I restore from it to a normal state which will print to the screen? I tried close STDOUT but no effect.

close STDOUT; my $output = ""; open(STDOUT, ">", \$output) or die "Can't open STDOUT: $!"; print "test \n";
close STDOUT;//no effect

Thanks!

Comment on How to restore from redirecting STDOUT to variable?
Download Code
Re: How to restore from redirecting STDOUT to variable?
by choroba (Canon) on Jan 17, 2013 at 02:45 UTC
    Read open. The examples are there:
    #!/usr/bin/perl use warnings; use strict; open my $save_out, '>&', \*STDOUT or die "Can't dup STDOUT: $!"; close STDOUT; my $output; open STDOUT, '>', \$output or die "Can't open STDOUT: $!"; print "test \n"; close STDOUT; open STDOUT, '>&', $save_out or die "Can't restore STDOUT: $!"; print "Back\n"; print $output;
    لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
      Thanks! What's exactly the "&" means after ">"?

        That you want the file descriptor dup()ed, i.e. get a new file descriptor that refers to the same output stream as STDERR and a Perl-level file handle layered on top of that.

        As the open() perldoc also explains, this is even better written with an '=' after the ampersand:

        open my $save_out, '>&=', \*STDOUT or die "Can't fdopen STDOUT: $!"; open STDOUT, '>&=', $save_out or die "Can't restore STDOUT: $!";
        This avoids creating an all new file descriptor but reuses the system's for a new Perl file handle.

Re: How to restore from redirecting STDOUT to variable?
by Anonymous Monk on Jan 17, 2013 at 03:07 UTC

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1013683]
Approved by choroba
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (6)
As of 2015-01-31 17:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My top resolution in 2015 is:

















    Results (259 votes), past polls