use Encode; # ... assign goofy string value to $test ... $test =~ s/%([0-9A-F]{2})/chr(hex($1))/eg; # convert hex digits to octets $test = decode( "utf8", $test ); # convert octets to unicode characters