I have a question about that regex. A look at
sub unescape in
CGI reveals a regex
that's nearly identical to the one in question. The first
difference is trivial {2}. I'm curious about how
significant the use of a signed pack (c) in the CGI regex
is, in contrast to the unsigned pack (C) in the other one?
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # carg
+o
$todecode =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge; # CGI
For reference's sake here's sub unescape from
CGI.pm version 2.46:
# unescape URL-encoded data
sub unescape {
shift() if ref($_[0]);
my $todecode = shift;
return undef unless defined($todecode);
$todecode =~ tr/+/ /; # pluses become spaces
$todecode =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge;
return $todecode;
}
thanks -
epoptai
--
Check out my Perlmonks Related Scripts like framechat,
reputer, and xNN.