# New Ticket Created by Sam S. # Please include the string: [perl #131871] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/Ticket/Display.html?id=131871 >
This bug was found as a side-effect of RT #131870, but might be a separate issue: ➜ await ^10 .map: -> $i { start { "".match(/ { say $i } /) } } 7 7 6 6 7 8 9 9 9 9 Somehow, multiple iterations see the same value for the closed-over variable `$i`. Without the `await` and `start`, it prints each number from 0 to 9 exactly once, like it should. --- Note that the problem is only with *code blocks* inside regexes. When a lexical variable is interpolated into the top-level of a regex directly, things seem to work fine: ➜ say await ^10 .map: -> $i { start { "0123456789".match(/ $i /) } } (「0」 「1」 「2」 「3」 「4」 「5」 「6」 「7」 「8」 「9 --- Bot-friendly version that reliably prints `False`, even though it should print `True`: my $c = Channel.new; (await ^100 .map: -> $i { start "".match(/ { $c.send: $i } /) }); $c.close; say $c.sort.list eqv (^100).list; According to bisectable6 and committable6 this prints `False` for all past Perl 6 releases, so it's not a regression but rather an old bug.