# New Ticket Created by Larry Wall # Please include the string: [perl #126415] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/Ticket/Display.html?id=126415 >
Using a normal closure works: lucca:~/rc 1244> cat foo my @isprime = False,False; # 0 and 1 are not prime by definition say (for 1 .. 10 -> $i { $i if @isprime[$i] //= so $i %% none 2 ...^ { $_ > $i.sqrt.floor }; }) lucca:~/rc 1245> p foo (2 3 5 7) Using a WhateverCode doesn't work: lucca:~/rc 1246> cat bar my @isprime = False,False; # 0 and 1 are not prime by definition say (for 1 .. 10 -> $i { $i if @isprime[$i] //= so $i %% none 2 ...^ * > $i.sqrt.floor; }) lucca:~/rc 1247> p bar (2 3 4 5 6 7 8 9 10) But it works again if we expand out the //= to its desugar: lucca:~/rc 1250> cat baz my @isprime = False,False; # 0 and 1 are not prime by definition say (for 1 .. 10 -> $i { $i if @isprime[$i] = @isprime[$i] // so $i %% none 2 ...^ * > $i.sqrt.floor; }) lucca:~/rc 1251> p baz (2 3 5 7)