perlquestion
Kozz
<p>Wise monks:</p>
<p>Though I've been using Perl for several years, I've always taken for granted the ease of using hashes in all their incarnations. Now I've returned to school (for a CS degree) and while taking many data structures classes, have been wondering more about what are the internals of Perl's hashes.</p>
<p>I've looked online to find more info on how perl hashing works, and though some articles explain the different hash functions used through different perl versions, it's not clear:
<ol>
<li> What is the initial size of a hash in memory when created? (e.g. declared "my %hash;", but no data in it yet)</li>
<li> What method is used to "grow" the hash? Doubling & re-hashing? Linear hashing? Something else? </li>
</ol>
</p>
<p>I had written a small Perl script to perform a small task for an algorithms class, and the TA asked me about its true space efficiency versus another method which didn't use hashes, and I realized I couldn't tell him with any confidence how much memory my hash took up.</p>
<p>Any monks familiar with internals that would like to explain it? I suppose I could wade through the source, but... eek! I'm not a C programmer, either. Thanks!</p>
<p><b>Addendum / Bonus Question:</b> Do Perl hashes differ in implementation versus "associative arrays" that appear in other languages? Do most other languages implement associative arrays internally in hash tables?</p>