per fare l'escape con una funzione carina io preferirei questa:
codice:
$val=~s/%([A-Fa-f\d]{2})/chr hex $1/eg;
per fare l'inverso.
Dipende da quali caratteri vuoi fare l'escape.
L'operazione inversa potrebbe essere:
codice:
$ciao=~ s/([^A-Za-z])/"\%".unpack("H*",$1)/ge;
Tutto quello che non è nell'insieme di A-Za-z trasformarlo in %(relativo codice esadecimale).
Duqnue dunque si potrebbe riscrivere così:
codice:
$ciao=~ s/([^\w ])/"\%".unpack("H*", $1)/seg;
$ciao=~ tr/ /+/;
Se non sbaglio al posto degli spazzi che sempre un "+", se proprio vogliamo essere pignoli :P
Ciao