Kamal Ahmed wrote:
> Hi Perl Group,
> How can I get number of objects in a hash ?

perlfaq4:

  How can I know how many entries are in a hash?

    If you mean how many keys, then all you have to do is take the scalar sense
    of the keys() function:

        $num_keys = scalar keys %hash;

    The keys() function also resets the iterator, which in void context is
    faster for tied hashes than would be iterating through the whole hash, one
    key-value pair at a time.

perldata (hash storage info):

    If you evaluate a hash in scalar context, it returns false if the hash is
    empty. If there are any key/value pairs, it returns true; more precisely,
    the value returned is a string consisting of the number of used buckets and
    the number of allocated buckets, separated by a slash. This is pretty much
    useful only to find out whether Perl's internal hashing algorithm is
    performing poorly on your data set. For example, you stick 10,000 things in
    a hash, but evaluating %HASH in scalar context reveals ""1/16"", which means
    only one out of sixteen buckets has been touched, and presumably contains
    all 10,000 of your items. This isn't supposed to happen.

    You can preallocate space for a hash by assigning to the keys() function.
    This rounds up the allocated buckets to the next power of two:

        keys(%users) = 1000;                # allocate 1024 buckets

-- 
  ,-/-  __      _  _         $Bill Luebkert    Mailto:[EMAIL PROTECTED]
 (_/   /  )    // //       DBE Collectibles    Mailto:[EMAIL PROTECTED]
  / ) /--<  o // //      Castle of Medieval Myth & Magic http://www.todbe.com/
-/-' /___/_<_</_</_    http://dbecoll.tripod.com/ (Free site for Perl/Lakers)

_______________________________________________
ActivePerl mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to