in reply to Regular Confuscion

I'd make a little script with the first two lines you showed but add two more:
my $value = '%22Happy%20Birthday%21%22'; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; print "$value\n";
Try running that, it should show you the effect of your code, if not the mechanism.

Phil