$str =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg; #### $str =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg;