in reply to Find repeated patterns in strings

A simple optimization would be to replace

for (0..($strLen-1))
with
for ( 0..$strLen/2 )
One could get fancier by testing only those cycle lengths that are either 1 or prime factors of $strLen, which could make a difference for long strings.

Also, I think it's simpler just to test for equality of $str and $copy, obviating the xor and the regex:

for ( 1..$strLen/2 ) { $copy .= substr $copy, 0, 1, ''; return wantarray ? ($_, substr $str, 0, $_) : $_ if $copy eq $str; }

the lowliest monk