Bug#810156: scalar of hashes not documented
Niko Tyni
ntyni at debian.org
Thu Jan 7 13:42:09 UTC 2016
On Thu, Jan 07, 2016 at 11:21:57AM +0800, Dan Jacobson wrote:
> Package: perl-doc
> Version: 5.20.2-6
> Severity: minor
>
> perldoc -f scalar makes absolutely no mention of what we see (/) here:
> $ perl -wle '$h{a}=0; print scalar %h;'
> 1/8
It doesn't explain what happens when you evaluate an array in scalar
context either, and I don't think it should.
However, perldata.pod has this paragraph under "Scalar values":
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. If a tied
hash is evaluated in scalar context, the "SCALAR" method is called
(with a fallback to "FIRSTKEY").
which should be quite enough IMO.
--
Niko Tyni ntyni at debian.org
More information about the Perl-maintainers
mailing list