From a syntatical point of view, it doesn't matter whether or not that place is a file, a monitor, or some IP connection to another machine. The OS is what routes the data to the file, monitor, or IP connection. ... The problem with Windows is that you cannot bind STDIN/STDOUT as descriptors.
Under win32, the standard input, output, and error are file handles just like any others. The underlying OS primitive WriteFile is given a file handle and a buffer to write. If they couldn't be treated in a uniform manner, redirection on the command line wouldn't work, would it?

I think I see what you're getting at. The program can run as a normal command-line, writing to stdout. Or, you can invoke it with some flag and it listens to a socket and accepts a connection, and then uses that socket instead of stdout.

So, the program is written to use $out for all its writes. Why doesn't that work for you? It works fine for me. I've written code that takes a file descriptor as a parameter, and it has no problems with passing \*STDOUT.

Other than being predefined, STDIN and STDOUT behave just like any other file descriptor in Perl. You could re-point STDOUT to the socket handle, for example, instead of using $out in all your print statements. (or you could use select to make $out the default).

—John


In reply to Re: Binding STDIN/STDOUT and why it doesn't work on Windoze by John M. Dlugosz
in thread win32/unix compatible script by aristAugust

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.