That url *should* be

http://www.example.com/mjs/q.epl?a=b&c=d

Yeah, ? is valid in the query string, but only the first one is special. & 
is supposed to separate field value pairs after the first ? starts them.

If you can't change the code that generates the URL, that is... sad.  I 
wouldn't expect others to support that, but CGI.pm is open source; it 
should be possible to change its code so that it recognizes both & and ? 
as separators - that way if your vendor ever fixes their, um, stuff, your 
code will still work.  Note that you can put your copy of CGI.pm in 
site_perl or your own directory; if that directory is listed in PERL5LIB, 
it will be checked before the core directory.  (Personally, when I compile 
perl, I reorder the includes so site libs are tried first - after all, 
that's where we're most likely to update things first.  Vendors take an 
age to update stuff, and core takes ages.)

-- 
Ed Grimm
Identity Services



From:
Michael Stevens <michael.stev...@dianomi.com>
To:
"embperl@perl.apache.org" <embperl@perl.apache.org>
Date:
05/03/2013 09:06 AM
Subject:
handling query strings with ? in



Hi.

We're trying to handle some odd query strings in embperl, eg:

http://www.example.com/mjs/q.epl?a=b?c=d

embperl parses this as:

Using %fdat
Field
Value
a b?c
d


CGI.pm parses this as:

Using CGI.pm
Field
Value
a
b?c=d

I agree that these are some pretty bizarre queries, but annoyingly we 
can't change the source, and embperl seems to handle them pretty badly. 
Googling suggests ? in a query string is probably valid, eg:

http://www.456bereastreet.com/archive/201008/what_characters_are_allowed_unencoded_in_query_strings/

Is there anything that can be done to make embperl behave more as 
expected?

-- 
Michael Stevens
Dianomi Ltd
18 Buckingham Gate
London SW1E 6LB

Tel: 020 3463 5662
Fax: 020 7630 7356
www.dianomi.com

The information in this message and any attachment is intended for the 
addressee and is confidential and may be subject to legal privilege. 
Dianomi Ltd, Registered Office: One America Square, Crosswall, London. 
EC3N 2SG. Registered in England and Wales with Company Registration Number 
4513809. VAT registration number: 809754988 

Reply via email to