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);


> So, it looks to me as though the arguments given to the speakhash()
> subroutine should be slurped into %hash. Regardless, it strikes me as
> odd that Rakudo* seems to think that the subroutine should expect *0*
> arguments.

The error message is potentially confusing, yes.

> So... clearly there's a problem here, but I'm not sure if it's with
> Rakudo* or with my thinking. :-)
>
> Any thoughts on this matter would be appreciated.
>
> many thanks,
>
> dha
>
> --
> David H. Adler - <d...@panix.com> - http://www.panix.com/~dha/
> Why *isn't* there a Widget::Gonzo module?
>



-- 
Will "Coke" Coleda

Reply via email to