http://www.perlmonks.org?node_id=870919


in reply to Re: Cleaning up non 7-bit Ascii Chars for XML-processing
in thread Cleaning up non 7-bit Ascii Chars for XML-processing

Okay, thanks for the information.

But this line:

$field =~ s/([^\x20-\x7E])/sprintf("&#x%X;", ord($1))/eg;

Won't that convert anything greater than or equal to a "space" (ascii 0x20) up to 0xfe?  And why are you skipping 0xff?

And other than those things, isn't that really equivalent to what I was doing?  Except that, it appears you are outputting ’ where I was outputting \, and are those in fact equivalent?

Update:  I just realized I missed the fact that your regex has '^', so it negates those characters.  That makes a lot more sense.

But I would still ask, isn't the functionality of this subroutine the same as my original (other than the extra 'x' in your output "#xNN;", which I still think is wrong), or am I missing something else?


s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/