while () { $_=~s/([.,\s]*?)(\w{1})(\w+)(\w{1})([,.\s]*?)(?{$j=sub{$x=shift;for(1..50){$n=int(rand(length($x)-1));$x=reverse(substr($x,0,$n)).substr($x,$n);}return $x };$x=$j->($3)})/$1$2$x$4$5/g; print $_; } __DATA__ Down that path lies madness. On the other hand, the road to hell is paved with melting snowballs. Although the Perl Slogan is There's More Than One Way to Do It, I hesitate to make 10 ways to do something. And don't tell me there isn't one bit of difference between null and space, because that's exactly how much difference there is. Randal said it would be tough to do in sed. He didn't say he didn't understand sed. Randal understands sed quite well. Which is why he uses Perl. As usual, I'm overstating the case to knock a few neurons loose, but the truth is usually somewhere in the muddle, uh, middle. Of course, I reserve the right to make wholly stupid changes to Perl if I think they improve the language.