open( my $fh, '/usr/share/dict/propernames' ) or die $!; while (<$fh>) { chomp; push( @{$words{length($_)}}, $_ ); } while () { s/(\S+)/replace($1)/ge; print; } sub replace { my $list = $words{length $_[0]} or return $_[0]; return $list->[rand @$list]; } __DATA__ ., ,; .r, @ln qly tlg nq aq, Brg iaB WiW iqpbduk: ifcciWvj Wypdip @rnoqqS lc st unx mm su. Wyl. eee daa jb; @kS kjt smp WkW 8hytct: ih xd WiZ Zlantc@ tg .vk WrW cyW:: hy, vx bo WnW gtx,i 0rW SnjsaS WbW gw oo kkZ rto WeW fvB 0qZ xbcd ocg tfrotxynk veqWhurb kdy wavkuseax0 , ,:;i : yr , ,;i .: Zjc ugr btfau.