in reply to Split string into equal parts

s/.{4}\K(?=.)/ /sg;

Replies are listed 'Best First'.
Re^2: Split string into equal parts
by AnomalousMonk (Archbishop) on May 28, 2010 at 19:31 UTC

    For those still stuck in 5.8-dom, it's possible to do this substitution without use of the  \K special escape of 5.10:

    >perl -wMstrict -le "for (@ARGV) { (my $sp = $_) =~ s{ (.{4}) (?= .) }{$1 }xmsg; print qq{'$_' -> '$sp'}; } " "" A ABC ABCD ABCDa ABCDabc ABCDabcd ABCDabcdE '' -> '' 'A' -> 'A' 'ABC' -> 'ABC' 'ABCD' -> 'ABCD' 'ABCDa' -> 'ABCD a' 'ABCDabc' -> 'ABCD abc' 'ABCDabcd' -> 'ABCD abcd' 'ABCDabcdE' -> 'ABCD abcd E'

    This approach is likely less efficient due to use of a capture. Is it possible to do this operation in a pre-5.10 solo substitution (i.e., no  m//  unpack  join etc.) without a capture and in a fairly simple way (for some definition of 'fairly simple')?

Re^2: Split string into equal parts
by kalyanrajsista (Scribe) on May 29, 2010 at 13:57 UTC
    Thank you ikegami, You're one-liner is awe-some but unfortunately I'm still using Perl 5.8.8 and thus unable to use your solution. Just curious to know any other solution which works in any version of Perl