FWIW, confirmed on the latest blead parakudo.
On Jun 30, 2013, at 6:39 PM, Ayiko (via RT) <perl6-bugs-follo...@perl.org>
wrote:
> # New Ticket Created by Ayiko
> # Please include the string: [perl #118705]
> # in the subject line of all future correspondence about this issue.
> # <URL: https://rt.perl.org:443/rt3/Ticket/Display.html?id=118705 >
>
>
>
> s/// inside a for loop doesn't update $/ and uses previous value in
> replacement
> text.
> Failed s/// doesn't reset $/ either.
> m// seems to work ok.
>
> Same problem with $0, $<foo> who depend on $/
>
> ---test file:
> use v6;
> use Test;
> my $v; my $i; $/ = ();
> $_ = '1'; s'1'_$/'; is $_ , '_1', '$/: plain
> s///';
> $_ = '2'; $i = 1; while $i-- { s'2'_$/'; is $_ , '_2', '$/: s///
> in
> while'; };
> $_ = '3'; loop { s'3'_$/'; last }; is $_ , '_3', '$/: s///
> in
> loop';
> $_ = '4'; -> $_ is copy { s'4'_$/'; is $_ , '_4', '$/: s///
> in
> -> {}'; }($_);
> $_ = 'x'; for '5' -> $_ is copy { s'5'_$/'; is $_ , '_5', '$/: s///
> in
> for (copy)';};
> $v = '6'; for 'x' { $v ~~ s'6'_$/'; is $v , '_6', '$/: $v ~~
> s/// in for'; };
> $v = '7'; for 'x' { $v ~~ s'7'_$/'; }; is $v , '_7', '$/: $v ~~
> s/// outside for';
>
> $v = 'X'; for 'x' { $v ~~ s'8'_$/'; }; nok $/, '$/: failed s///
> inside for';
>
> $_ = '1'; /1/; is $/, '1', '$/: plain m//';
> $_ = '2'; $i = 1; while $i-- { /2/; is $/, '2', '$/: m// in
> while'; };
> $_ = '3'; loop { /3/; last }; is $/, '3', '$/: m// in loop';
> $_ = '4'; -> $_ is copy { /4/; is $/, '4', '$/: m// in ->
> {}'; }($_);
> $_ = 'x'; for '5' -> $_ is copy { /5/; is $/, '5', '$/: m// in for
> (copy)';};
> $v = '6'; for 'x' { $v ~~ /6/; is $/, '6', '$/: $v ~~ m// in
> for'; };
> $v = '7'; for 'x' { $v ~~ /7/; }; is $/, '7', '$/: $v ~~ m//
> outside for';
>
> ---output on Rakudo star 2013.05
> ok 1 - $/: plain s///
> ok 2 - $/: s/// in while
> ok 3 - $/: s/// in loop
> ok 4 - $/: s/// in -> {}
> not ok 5 - $/: s/// in for (copy)
> # got: '_4'
> # expected: '_5'
> not ok 6 - $/: $v ~~ s/// in for
> # got: '_4'
> # expected: '_6'
> not ok 7 - $/: $v ~~ s/// outside for
> # got: '_4'
> # expected: '_7'
> not ok 8 - $/: failed s/// inside for
> ok 9 - $/: plain m//
> ok 10 - $/: m// in while
> ok 11 - $/: m// in loop
> ok 12 - $/: m// in -> {}
> ok 13 - $/: m// in for (copy)
> ok 14 - $/: $v ~~ m// in for
> ok 15 - $/: $v ~~ m// outside for
> ---