although that isn't quite the same as being closed

So you still refuse to learn this. The code demonstrates that the handle is actually closed, despite your persistent denials. Becoming lexically inaccessible doesn't cause impacts on external programs. The output lines appearing in the given order:

ls: write error End

shows that the handle is indeed closed (causing bin/ls to complain) before the next statement of Perl is executed.

The actual mechanism is that the lexical file handle contains a reference to a GLOB, which is the same data structure that Perl uses for global variables. But this GLOB is not a global variable because it isn't stored in a symbol table. Which means that when the lexical goes out of scope (and has no references), the lexical is destroyed which removes the last reference to the GLOB which then destroys the GLOB which also closes the file handle.

There is no global variable involved (because to be a global variable it has to have global scope; that is the definition of a global variable). And it does get destroyed and it does get closed (it can be destroyed because it isn't a global variable).

- tye        


In reply to Re^7: Scoping question - will file handle be closed? ("global") by tye
in thread Scoping question - will file handle be closed? by Monk::Thomas

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.