># Here is the interesting bit...I had to to guess what character ># was what. Does someone have a full list? ># >$chunk =~ s/%3A/\:/g; >$chunk =~ s/%2F/\//g; >$chunk =~ s/%28/\(/g; >$chunk =~ s/%29/\)/g; >$chunk =~ s/%2C/,/g; >$chunk =~ s/\+/ /g; >$chunk =~ s/%0D//g; >$chunk =~ s/%0A//g; >$chunk =~ s/%09/!/g; >$chunk =~ s/%27/'/g; >$chunk =~ s/%22/"/g; >$chunk =~ s/%25/\%/g; >$chunk =~ s/%26/\&/g; >$chunk =~ s/%20/ /g; >$chunk =~ s/%7E/~/g; >$chunk =~ s/%21/\!/g; >$chunk =~ s/%3F/\?/g; Charles, just use the pack function: $chunk =~ s/%(..)/pack("C", hex($1))/eg; If you want to handle the upper-ascii characters separately (to account for different, character sets), you may then want to use Bart Lateur's translation tables. -c