my $id = shift; $id ||= $q->param('id'); my $obj = myDBI::SomeTable->find_or_create({ id => $id }); foreach my $field ($q->param) { $obj->$field(scalar $q->param($field)) if $obj->can($field); } $obj->update;