http://www.perlmonks.org?node_id=615451


in reply to Seeking explanation on assigning a hash to a scalar

From perldata
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
It is not useful to assign a hash to a scalar. It is useful to store a reference to a hash in a scalar though, e.g.
my %hash = (foo => 1); my $ref = \%hash; print $ref->{foo};
This seems like an odd question to ask - are you looking for perl trivia, or trying to solve a problem?

Replies are listed 'Best First'.
Re^2: Seeking explanation on assigning a hash to a scalar
by blazar (Canon) on May 15, 2007 at 18:48 UTC
    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.

    I wrote it before and I'm repeating it here, again without proper attribution (anyone here?) nor the certainty of quoting it really correctly: "the value of a hash in scalar context is of no use to a Perl programmer, only to a perl programmer."