in reply to Passing scalars to CGI module

First, let me idly suggest that you re-consider your data structure to use a hash of hashes instead of a hash of arrays. Named lists are LOTS easier to use in situations like yours: your code will become more self-documenting, easier to modify (adding elements is bunches easier), and easier to understand 6 months from now.

But back to your problem: suppose you did this:

%sample = ( 'login' =>["Login", 75, 'textfield', 'login'], 'last' =>["Last Name", 75, 'textfield', 'last'], 'first' =>["First Name", 70, 'textfield', 'first'] );
...where $sample{'login'}[2] is your CGI method and  $sample{'login'}[3] is the fieldname. Or better yet:
%sample= ( 'login' =>{name=>"Login", width=>75, method=> 'textfield', field=>'log +in'}, 'last' =>{name=>"Last Name", width=> 75, method=>'textfield', field=>' +last'], 'first' =>{name=>"First Name", width=>70, method=>'textfield', field=> +'first'} );
That way if you wanted to access the default param of 'last' all you'd have to do is:
print $q->$sample{'last'}{'method'} ($sample{'last'}{'field'});
or somesuch.

Gary Blackburn
Trained Killer

Replies are listed 'Best First'.
Re: Re: Passing scalars to CGI module
by filmo (Scribe) on Apr 14, 2001 at 03:26 UTC
    Okay, I understand your point about hash of hashes. So,...
    %sample= ( 'login' => {name=>"Login", width=>75, method=> 'textfield', field=>'login', size=>'10', max=>'8' }, etc... );
    Now, to generate the <INPUT TYPE="text" NAME="login" VALUE="" SIZE=10 MAXLENGTH=8> HTML code, I would do that by:
    $q = new CGI; print $q->$sample{'login'}{'method'}->($sample{'login'}{'field'}, $sample{'login'}{'size'}, $sample{'login'}{'max'}); or do I need to do the following: print $q->$sample{'login'}{'method'}->(-name=>$sample{'login'}{'field' +}, -size=>$sample{'login'}{'size'}, -max=>$sample{'login'}{'max'});
    Ultimately, I want to be able to do something like the following.
    @report = ('last','first','phone','payment'); foreach (@report) { print qq|<tr><td width="$sample{$_}{'width'}">$sample{$_}{'name'}|; print $q->$sample{$_}{'method'}->(-name=>$sample{$_}{'field'}, -size=>$sample{$_}{'size'}, -max=>$sample{$_}{'max'}); print qq|</td></tr>|; }

    --
    Filmo the Klown