Hallo!
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
Ich benutze uebrigens immer den Ausdruck
s/%([0-9A-Fa-f]{2})/chr(hex($1))/ge;
bei mir isses s/%([0-9a-f]{2})/pack('H2', $1)/egi;
;-) habe hier einen zweistelligen HexWert, der in ein Byte gepackt werden soll ...
Vielleicht koennte man ja auch \w statt [a-fA-F0-9] verwenden. \w beinhaltet lediglich noch zusaetzlich den Underscore _, und wenn die URL den Regeln folgt, kommt dieser niemals nach einem %-Zeichen.
sogesehen schon - Du hast aber noch den ganzen Rest der Buchstabe-Suppe vergessen ;-)
ciao,
Jörk