If the string representation of your integers is longer than their packed representation, then you will save a few bytes per key, but the savings will be minimal. A few hundred kilobytes at most:

undef $h{ $_ } for 1e6 .. 2e6;; print total_size( \%h );; 34617643 undef $i{ pack 'V', $_ } for 1e6 .. 2e6;; print total_size( \%i );; 34231634 undef $j{ $_ } for 100e6 .. 101e6;; print total_size( \%j );; 34883144 undef $k{ pack 'V', $_ } for 100e6 .. 101e6;; print total_size( \%k );; 34239854

And the relative saving is less still if you are assigning values to the keys.

If you described your application and the nature/distribution of your keys in more detail, there are often ways of storing such data that has significantly lower memory costs. Though these usually trade space for speed.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

In reply to Re: are perl hash keys always strings? by BrowserUk
in thread are perl hash keys always strings? by Anonymous Monk

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.