On Sat, 19 Jan 2019 05:45:44 -0800, haukex@zero-g.net wrote: > Hi everyone, > > This oneliner fails, when it most likely shouldn't: > > perl -e 'while( "\N{U+E4}bc" =~ /(..?)(?{$^N})/g ) > { length($^R)==length("$^R") or die }' > > A slightly longer test program (attached) shows that on the second > iteration, length($^R) is reporting 2 instead of the expected 1. It > seems to have something to do with UTF8 strings, since it works fine on > non-UTF8 strings. > > Tested on several versions of Perl on Linux and Windows (down to 5.8.9). From a debugging build: $ ./perl -e 'while( "\N{U+E4}bc" =~ /(..?)(?{$^N})/g ){ length($^R)==length("$^R") or die }' panic: sv_len_utf8 cache 2 real 1 for c at -e line 1. so I suspect a missing SvSETMAGIC() somewhere. Tony --- via perlbug: queue: perl5 status: open https://rt.perl.org/Ticket/Display.html?id=133782Thread Previous | Thread Next