>>519
s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
ならどう?