Note that the "local *STDOUT;" would prevent the proper use of '>&' from making file descriptor (fileno) 1 redirected to the socket. And that would mean that C code (such as module XS code) or external code (such as run via exec or system) would not write to the socket when it wrote to its STDERR equivalent.

So it is better to use the sample code from open for saving and then restoring STDOUT instead of using the seductively simple "local *STDOUT;". I'll also note that manipulating symbol-table globs that contain open file handles will often have even worse results so I consider it something one should avoid unless one clearly understands exactly why it should be avoided.

- tye        


In reply to Re: howto redirect STDOUT to $socket (local*) by tye
in thread howto redirect STDOUT to $socket by jeanluca

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.