It seems to apply only for opening file handles to strings instead of files.

Indeed. I was trying to explain the reason for that in the bit that confused you. Let me try to explain better.

Perl file handles are not the same as OS file handles. The OS file handles are called file descriptors.

Perl file handles are only associated with a file descriptors when there's a real file (or pipe, etc) involved. That's not the case for file handles created using open(FILE, \$var), because the OS didn't create them. Those file handles exist solely within perl, so perl gives them the invalid file descriptor -1. fileno returns the file descriptor associated with a Perl file handle.

open DUP, ">&FILE" is Perl's interface to a function that works on file descriptors, not Perl file handles. open DUP, ">&FILE" is more or less equivalent to the pseudocode DUP.fileno = dup(FILE.fileno); Therefore, it won't work on file handles opened using open(FILE, \$var) because they don't have corresponding file descriptor.


In reply to Re^3: possible bug in opening file handle to variable by ikegami
in thread possible bug in opening file handle to variable by youngh

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.