On 09/06/2016 03:59 PM, X Dungeness wrote:
$str =   "ab\rcd\nef\ngh\fij";

$str =~ s{  ([^[:print:]])  }{ sprintf( "(%#2X)", ord $1) }gex;

---->   ab(0XD)cd(0XA)ef(0XA)gh(0XC)ij


that is a nice use of /e (don't think you need /x when you already have /e as code can handle blanks. but the # comment feature is enabled with /x.). but the other answers had a nice optmization. they built the hash of numbers to hex strings so their replacement only did a hash lookup and they don't even need /e to work. that is a basic caching optimization that newbies can learn to use. this is a good case to see the coding differences. as an exercise, some of you could even write up a benchmark comparing them. post your results to this thread.

thanx,

uri


--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to