Here's an example:
But as you can see, it's not going to be very generalised, because I'm having to test for the type of field every time: if it's a textfield, do the textfield thing, if it's a textarea, do something else.%fields = ( 'name', 'textfield', 'email', 'textfield', 'site name', 'textfield', 'description', 'textfield', 'comments', 'textarea' ); foreach $key (keys(%fields)) { $thisrow = td({-align=>right,-valign=>TOP},$key); if($fields{$key} eq 'textfield'){ $thisrow .= td({-align=>left,-valign=>TOP}, textfield(-name=>$key,-size=>50,-maxlength=>80) ); } if($fields{$key} eq 'textarea'){ $thisrow .= td({-align=>left,-valign=>TOP}, textarea(-name=>$key,-cols=>50,-rows=>10) ); } push(@rows,$thisrow); } print table({-border=>1,-width=>'50%'}, Tr(\@rows) );
What I can't figure out is how to do this:
i.e. call the particular CGI.pm sub using the value, which is the name of that sub.$thisrow .= td({-align=>left,-valign=>TOP}, $fields{$key}(-name=>$key)); # make a textfield # because the value is # 'textfield' - DWIM!
Any help greatly appreciated...
--
Every bit of code is either naturally related to the problem at hand, or else it's an accidental side effect of the fact that you happened to solve the problem using a digital computer.
M-J D
In reply to Generalising Forms from CGI.pm by Cody Pendant
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |