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/