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
In reply to Re: Better Algorithm to Encode This?
by tachyon
in thread Better Algorithm to Encode This?
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |