Cody Pendant has asked for the wisdom of the Perl Monks concerning the following question:
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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
(jeffa) Re: Generalising Forms from CGI.pm
by jeffa (Bishop) on Feb 19, 2003 at 02:01 UTC | |
by clscott (Friar) on Feb 19, 2003 at 22:41 UTC | |
|
Re: Generalising Forms from CGI.pm
by tachyon (Chancellor) on Feb 19, 2003 at 02:02 UTC | |
|
Re: Generalising Forms from CGI.pm
by pfaut (Priest) on Feb 19, 2003 at 02:28 UTC | |
|
Re: Generalising Forms from CGI.pm
by Cody Pendant (Prior) on Feb 19, 2003 at 06:11 UTC | |
|
•Re: Generalising Forms from CGI.pm
by merlyn (Sage) on Feb 19, 2003 at 14:16 UTC | |
by Cody Pendant (Prior) on Feb 19, 2003 at 20:54 UTC |