On Tuesday 16 July 2002 01:01 am, Deborah Ariel Pickett wrote: > If %(...) makes a shallow copy of its innards, as Perl5's { ... } does, > then how do you impose hash context onto something without doing the > copy?
%{} forces hash context. What else could it do? %{ foo() } calls foo() in hash context, asking it to return a HASH ref, does it not? %( foo() ) would call foo() in list context asking for a list of PAIRs. If foo() returns a hash ref which you want a copy of, you would use %( *foo() ) which would flatten the returning hash ref into a PAIR list, then construct a hash ref from those pairs. My argument is that %{} already represents 'HASH' context, and we don't need %() for that as well. Instead, we need a punctuation-happy hash constructor. Ashley Winters -- When you do the community's rewrite, try to remember most of us are idiots.