in reply to CGI Parameters in order

This is wrong:

push @params, $q->param($_);

The problem is that input fields can have more than one value. When this happens, CGI::param() will return an array of values. This will break things when you later decide to convert your array into a hash.

Another problem is that you are relying on the client browser to send the data to you in the same order that it appears on the form. I think the only way you can be guaranteed to get the data in the correct order is if you store a configuration that you can use later to put the data in the correct order.

Replies are listed 'Best First'.
Re: Re: CGI Parameters in order
by bassplayer (Monsignor) on May 03, 2002 at 19:22 UTC
    The problem is that input fields can have more than one value. When this happens, CGI::param() will return an array of values. This will break things when you later decide to convert your array into a hash.

    Yes, I simplified it for this example. Normally, I exclude from the hash any upload fields (handling them separately), and any fields that have multiple values, instead putting them into arrays.

    Another problem is that you are relying on the client browser to send the data to you in the same order that it appears on the form. I think the only way you can be guaranteed to get the data in the correct order is if you store a configuration that you can use later to put the data in the correct order.

    Previously, when I have put CGI parameters into a hash, I was not relying on their order. In the scenario described above, I was hoping to, to avoid 'manually' putting the data in order. The whole point of my question was to find out if I could do this. I have found my answer from the helpful responses above, which is no. As usual with this site, I also learned several better ways to do things. Thanks everyone.

    bassplayer