On Fri, Aug 08, 2008 at 07:32:52AM +0200, Carl Mäsak wrote: > Jonathan (>): > > That this means the { $_ => uc $_; } above would end up composing a Hash > > object (unless the semicolon is meant to throw a spanner in the > > hash-composer works?) It says you can use sub to disambiguate, but > > > > %ret = map sub { $_ => uc $_; }, split "", $text; > > > > Doesn't work since $_ isn't an automatic parameter for a sub, like it would > > be in just a block (in the implementation, and if I understand correctly in > > the spec too). > > Out of curiosity, would this work? > > %ret = map -> { $_ => uc $_; }, split "", $text;
A pointy block with nothing after the arrow is a sub with zero params, so no, this wouldn't work. One would need something like %reg = map -> $_ { $_ => uc $_; }, split "", $text; > Or this? > > %ret = map { $^foo => uc $^foo; }, split "", $text; I'm thinking S04 probably needs some clarification/updating here. Any block that contains a (placeholder) parameter probably needs to remain a sub, even if the block content is a comma-separated list starting with a pair/hash. Pm