Да тут делов на одну простую регулярочку $data =~ s/\w+/$w=$&;$r='';$w=~s|.|$r=$&.$r|ge;$r/ge;
А если серьезно, циклом выдирай из текста слова и каждое слово читай вложенным циклом наоборот (у VirtUX-а можешь стырить код чтения наоборот). Кстати, если нужен юникод, будет веселее ))