$_ = "a%5eb"; s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge; #### use URI::Escape; $_ = uri_unescape "a%5eb";