Bart writes:
=> Especially the idea of using the /\B/ anchor appeals to me.
=> Hmm... let's try it:
=>
=> : perl -pe 'sub r{join"",map chop,sort
map{rand.$_}shift=~/(.)/g};s/\B(\w+)\B/r$1/eg'
Thanks to Etienne for the "map chop,sort map". That was
neat. At long last, we are having some FWP on this list. :-)
Bart's "\B" is great, too.
Now we can inline &r, and save some chars.
|| perl -pe 's/\B(\w+)\B/join"",map chop,sort map{rand().$_}split"",$1/eg'
I have brought back Etienne's parens for rand(), to avoid
the warning. I've also replaced the /(.)/g in &r with a
split(). It is just as long, and is aesthetically pleasing
(to me), because I don't have a m// in the RHS of an s///.
The only trouble with "map chop,sort map" is that it doesn't
*guarantee* that the new string is different from the old.
The following does guarantee re-ordering., but it is much
less elegant. It is just two chars more than Bart's
solution, but it is 14 chars longer than inlining &r unchanged
(as above).
|| perl -pe 's/\B(\w*)(\w)(\w)\B/$3.$2.join"",map chop,sort
map{rand().$_}split"",$1/eg'
peace, || Rescuing good ideas: Micro venture capital:
--{kr.pA} || http://tinyurl.com/gjpd
--
"I promise you I will listen to what has been said here, even though \
I wasn't here." -- George W. Bush [http://slate.msn.com/?id=76886]