in reply to Better Algorithm to Encode This?
You could use these two lines. The second replaces all your s/// statements and puts them into a one liner
$STRING =~ tr/a-mN-ZA-Mn-z0-9.&@=/H-Mn-z0-9.&@=a-mN-ZA-G/; $STRING =~ s/([=&@\\\s%\/#"'\+\|\?])/ sprintf ".%x", ord $1 /ge;
The second regex looks for the chars you want to change to hex digits of their ascii values with a leading "." (I won't ask why you want to do this although I am intrigued :-) We capture these chars in $1 via the ([chars go here]) construct. We then use ord to get the decimal ascii value and sprintf to change them to hex (and also add that "."). We need the /g to do all occurrences and the /e to evaluate the second part of the regex and use the return value as the substitution value for $1.
Hope this helps
Cheers
tachyon
|
|---|