The sigil for file handles is *. That is also the sigil for "globs". But that sigil only works for global file handles. Lexical file handles are generally preferred these days. It so happens that lexical file handles were implemented by making this work:

open my $fh, ...

instead of making this work:

my *FH; open *FH, ...

likely because that required less work as far as making adjustments to the parser (and/or perhaps just because that is what popped into the implementer's head and seemed reasonable). Also, perhaps, because "globs" are symbol table thingies and lexicals don't go into any symbol table so "my *FH" is kind of "crossing the streams".

That support appeared in 5.006_001 so you could maybe even find the implementer (and the discussion in p5p that lead to the change). (See "=head2 File and directory handles can be autovivified" in perl561delta.pod.)

Update: Also because the precursors to proper lexical file handles were implemented w/o changes to Perl by people doing things like my $fh = do { local *FH; \*FH };.

- tye        


In reply to Re: Why don't file handles have sigils? (*) by tye
in thread Why don't file handles have sigils? by 1s44c

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.