When I try it:
$ perl6 -e 'my $p = "perl 5"; substr($p, 6, 1, '6'); say $p'
Too many positional parameters passed; got 4 but expected between 2 and 3
in sub substr at src/gen/CORE.setting:2034
in block at -e:1
Even in Perl 5 it doesn't work as expected :-)
$ perl -E 'my $p = "perl 5"; substr($p, 6, 1, '6'); say $p'
perl 56