$vals = \%areavals if ($field->fieldtype eq 'textarea') ; $vals = \%popupvals if ($field->fieldtype eq 'popup'); ... etc ... for each field type that might exist in the form. $tb++; $textvals{name} = $field->{name}; $textvals{tabindex} = $tb; $textvals(id} = $field->{name}; .... $page->textfield($vals) if ($field->fieldtype eq 'textfield') ; $page->textarea($vals) if ($field->fieldtype eq 'textarea') ;