Thanks, for the advice, I took a look at the CGI documentation that you had linked and it covers putting forms into a hash with this piece of code
use CGI ':cgi-lib';
my $params = Vars;
print $params->{user};
I used the other method a few years ago and although I never encountered any problems with it, this way I think is much better with the same results.
It's good to learn something new everyday!
| [reply] [d/l] |
You should unlearn this one though... it will come to bite you when you are using checkboxes or select-multiple option boxes. Understand that there can be multiple values for a given param, and simply ask for them as you need them. I really don't see what's so hard about:
my $last_name = param('last_name'); # only one last name
...
my @colleges_attended = param('colleges_attended'); # possibly 0 or ma
+ny colleges attended
That is, asking for it as you need it. Why does everyone wanna keep copying it into a hash? (It boggles me.)
| [reply] [d/l] |
Hi
You asked why place the form into a hash?
The Perl program uses 6 Perl Modules, collects information from about 60 fields and then makes calls to the other modules to enter and retrieve information from databases, check data constraints, etc. Presently the code calls one param at a time and then passes upto a dozen scalar variables to the various other procedures in different modules.
There are no checkboxes or radio buttons, and currently there are no plans for any files to be uploaded, and this probally won't change in the future.
It just seemed easier to load the form into a hash and then pass the reference of the hash around all the different modules to access all the various parts of the form, rather than have having vast amount of scalar variables declared all over the different modules .
But perhaps I'm wrong, it won't be the first time ;-)
Any more thoughts on this would be great.
Ant
| [reply] |
I would second the advice above about not rolling your own.
Ovid has a nice explanation of ways rolling your own can bite you in his online cgi course here
| [reply] |