[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Omaha.pm] print "%hash";
I hit this code today
$body .= "Email Address: ".$$results{email}."%0D%0A" if ($$results{email});
and thought "What? Isn't Perl going to try to interpret "%0D" as a hash?
Nope.
"%hash" is not interpreted at all. It's just a string.
Fun with hashes below...
j
$ cat j.pl
my %j = ( a => 1, b => 2 );
print %j, "\n";
print %j . "\n";
print "%j\n";
$ perl j.pl
a1b2
2/8
%j
perldoc 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.