in reply to Re: how to define html::template for the following hash in perl/cgi
in thread how to define html::template for the following hash in perl/cgi
Actually, the structure doesn't need to change at all, if the hash keys don't matter much (which they don't appear to). Just "cast" your hash of hashes into an array of hashes, like this:
$tmpl->param( blah => [ values %add ] );
The values piece generates a list containing the values (which are your inner hashes) inside %add; the square brackets make that list into an ARRAYref for the use of HTML::Template.
Or, if you need to preserve the key value, you could create a map:
$tmpl->param( blah => [ map { { %{$add{$_}}, 'key' => $_ } } keys %add + ] );
That's a little hairy, so let me explain: the map returns a list of HASHrefs. Each of these comes from your %add hash, and is modified with a new member called 'key' with the value of the %add hash's key for the given element. Yes, that's still confusing. Here's what the resulting data structure looks like:
$VAR1 = [ { 'req' => 'prc', 'value' => [ 'value1', 'value2', 'value3' ], 'entries' => ' ', 'name' => 'name2 ', 'type' => 'dropdown', 'default' => ' ', 'key' => 'hash2' }, { 'value' => [ '' ], 'entries' => 'M', 'name' => 'name1 ', 'type' => 'text', 'default' => ' ', 'key' => 'hash1' } ];
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: how to define html::template for the following hash in perl/cgi
by friedo (Prior) on Nov 04, 2005 at 16:08 UTC |