On Jul 10, 12:10 pm, [EMAIL PROTECTED] (Gowtham) wrote:
> Interestingly, A hash in a scalar context returns some fraction.
>
> Like, this code
>
> @array = ( 1 .. 100 );
> %hash = @array;
> print scalar %hash, "\n";
>
> prints
>
> 33/64
>
> Can somebody help me understand what this 33/64 is?

Yes.  Perl can.  Fire up a command line window, and type:
perldoc perldata

Among other useful information, you will find:

     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.

Paul Lalli


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to