in reply to letter mix
Couldn't you just do this?
This takes two non-space characters in a row, and swaps them.$data1 =~ s/(\S)(\S)/$2$1/g;
Perhaps it has slightly different behavior than yours, though. I only tested it on your example.
In Section
Cool Uses for Perl