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


in reply to Re: How to restore from redirecting STDOUT to variable?
in thread How to restore from redirecting STDOUT to variable?

Thanks! What's exactly the "&" means after ">"?
  • Comment on Re^2: How to restore from redirecting STDOUT to variable?

Replies are listed 'Best First'.
Re^3: How to restore from redirecting STDOUT to variable?
by Athanasius (Archbishop) on Jan 17, 2013 at 04:14 UTC
Re^3: How to restore from redirecting STDOUT to variable?
by mbethke (Hermit) on Jan 17, 2013 at 04:30 UTC

    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.

      Great! Thank all!