On Mon, Aug 16, 2010 at 3:36 PM, David H. Adler <d...@panix.com> wrote: > On Mon, Aug 16, 2010 at 03:14:28PM -0400, Will Coleda wrote: >> On Mon, Aug 16, 2010 at 3:03 PM, David H. Adler <d...@panix.com> wrote: >> > Given the code: >> > >> > ? ? ? ?use v6; >> > >> > ? ? ? ?sub speakhash (*%hash) { >> > ? ? ? ? ? ?say "%hash{}"; >> > ? ? ? ?} >> > >> > ? ? ? ?speakhash(1, 2, 3, 4, 5, 6); >> > >> > I get the error: >> > >> > ? ? ? ?Too many positional parameters passed; got 6 but expected 0 >> > ? ? ? ? ?in 'speakhash' at line 3:slurphash.p6 >> > ? ? ? ? ? ?in main program body at line 7:slurphash.p6 >> > >> > According to the UsingPerl6 draft document, "*%hash slurps all the >> > remaining unbound named arguments into a hash." >> >> The key here is "named" arguments; You've invoked the speakhash sub >> with positional args. >> >> Try this: >> >> sub speakhash (*%hash) { >> say %hash.perl; >> } >> >> speakhash(a => 1, b => 2, c => 3, d => 4, e => 5, f => 6); > > Hm. It just so happens that I tried speakhash(1 => 2, 3 => 4, 5 => 6) > and that didn't work. It seems that, although one can create a hash with > those pairs, you *can't* pass them as arguments. I'm not clear why. > > dha > > -- > David H. Adler - <d...@panix.com> - http://www.panix.com/~dha/ > i just ate a slice of key lime pie while drinking limeade > scurvy can't touch me now - obnoxicant >
I believe named arguments have to be valid parameter names. -- Will "Coke" Coleda