$string = "%3Cb%3Eyo%3C%2Fb%3E"; $string =~ s/+/ /sg; <---- You forgot this. $string =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/seg;