interaction between tr and s (was Re: tr question -- probably wrong list to ask, but ...)

[email protected] (Joel Rees)
Newsgroups perl.macosx
Message-ID <[email protected]>
Okay, given the following (without all the debugging code I had in  
earlier):

> # The code that grabs the parameters:
>
> my $qString = $ENV{'QUERY_STRING'};
> my @list = split( '&', $qString, 10 );
> my %queries = ();
> foreach my $pair ( @list )
> {	my ( $key, $value ) = split( '=', $pair, 2 );
> 	$key =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg;
> 	
> 	$value =~ tr/+/ /;
> 	
> 	$value =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg;

> 	$queries{ $key } = $value;
> }

Anyone know why commenting out the transliteration will recover the  
shift-JIS characters from the url-encoded stream (leaving spaces as  
'+', of course), but leaving the transliteration in will induce the  
code to drop shift-JIS lead bytes and every now and then whole  
characters?

I had a similar problem with

     $value =~ s/\+/ /g;

but it was an intermittent problem. (Haven't tried it today to see  
whether it only kills the shift-JIS characters when there is 8-bit  
space in the stream, but that may have been what was happening.)

Joel Rees
(waiting for a 3+GHz ARM processor to come out,
to test Steve's willingness to switch again.)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.