On 22/08/05, Luke Palmer <[EMAIL PROTECTED]> wrote: > Output? > > sub foo (+$a, *%overflow) { > say "%overflow{}"; > } > > foo(:a(1), :b(2)); # b 2 > foo(:a(1), :overflow{ b => 2 }); # b 2
I would have thought: overflow b 2 i.e. %overflow<overflow> = (b => 2) Because :overflow() is an unrecognised named argument, so it goes in the slurpy hash. The fact that the hash has the same name as the argument is a coincidence--does it make sense to explicitly name a slurpy when you can just splat *{ b => 2 } in directly? > foo(:a(1), :overflow{ b => 2 }, :c(3)); # ??? overflow b 2 c 3 Of course, that's just my way of thinking. (Also, last I heard you /could/ have multiple slurpy hashes, but any after the first would always be empty.) Stuart