http://www.perlmonks.org?node_id=27311


in reply to Generating a Pattern

Just to chime in with my own version,
1-10, 500x: 2 secs ( 1.13 usr 0.00 sys = 1.13 cpu) (printing) 1-10, 500x: 1 secs ( 0.48 usr 0.00 sys = 0.48 cpu) (not printing) 1-35m 10x: 26 secs (26.53 usr 0.00 sys = 26.53 cpu) (printing) 1-35, 10x: 15 secs (15.05 usr 0.00 sys = 15.05 cpu) (not printing)
My approach is similar to several of the ones already posted, but differs enough that I figured I might as well post it:
$x = 1; for(1..10){ $x =~ s/((.)\2*)/length($1).$2/ge; #print "@{[split//,$x]}\n"; }
Uncomment that print line to print everything out. And, of course, get rid of the array-de-ref function call if you don't care about spaces between the numbers.

Incidentally, I used the array ref so I could take advantage of $" being a space and not have to worry about mapping the numbers so they'd have spaces between them.