As a status update: we're back at the original failures: $ perl6 -e 'my $t = q[%foo% %bar% %foo% %baz%]; my %b = foo => 1, bar => 2, baz => 3; $t.=subst("%{.key}%", .value, :g) for %b.pairs; say $t' Method 'key' not found for invocant of class 'Any' in block <unit> at -e:1
$ perl6-m -e 'my %b = foo => 1, bar => 2, baz => 3; say "{.key}" for %b.pairs' Method 'key' not found for invocant of class 'Any' in block <unit> at -e:1 $ perl6 -e 'say "{.key}" given a => 1' Method 'key' not found for invocant of class 'Any' in block <unit> at -e:1 It works when for is followed by a block (instead of the statement_mod form) $ perl6 -e 'my %b = foo => 1, bar => 2, baz => 3; for %b.pairs { say "{.key}" }' foo bar baz