Assign method call to hash value?

Randal L. Schwartz merlyn at
Wed Jan 30 03:43:32 GMT 2013

>>>>> "Jasper" == Jasper  <jaspermccrea at> writes:

Jasper> On 29 January 2013 11:36, gvim <gvimrc at> wrote:
>> Yes, I'm aware of the scalar function but still not clear why assigning
>> $r->method as a hash value doesn't invoke a scalar context in the first
>> place.

Jasper> Is there any context in the braces? It's just a (albeit fat) comma
Jasper> separated list of stuff, isn't it?

In general, this is dangerous:

my $hashref = { foo => somefunc(), bar => otherfunc() };

You are invoking somefunc() and otherfunc() in *LIST* context.

They may or may not return a single scalar.  They more likely will
return a list, or empty.  And your hash will be messed up.

Better written as:

my $hashref = { foo => scalar somefunc(), bar => scalar otherfunc() };

Then you can be assured of a two-element hash.

Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn at> <URL:>
Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
See for Smalltalk discussion

More information about the mailing list