One, your syntax should use $hash{key} = 1, not %.

Two, unless you're storing millions of these, and that's a real bottleneck for you, don't worry about all the extra scalar 1 references. The scalar 1 may already be special-cased to work the same way internally as the singleton scalar undef, but I don't know for sure.

Three, yes, checking for exists is probably more suitable if you are concerned with the presence in the hash than using defined, which discriminates on the type of value associated with a key. After all, you could say $hash{key} = () and the key exists but the value is not defined.

--
[ e d @ h a l l e y . c c ]


In reply to Re: Hashing it out: defined? exists? by halley
in thread Hashing it out: defined? exists? by eff_i_g

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.