http://qs1969.pair.com?node_id=235616

moof1138 has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks,

I am rewriting a web form, because the old form hard coded *everything*, and I am trying to make it a bit more dynamic and flexible. The form allows folks to update stuff stored in an AoA called @champarray in the code below. I have it dynamically generating a table with all the items, but I want to make it break the rows up, so that there are not more than five tds per tr (so that the page does not get absurdly wide), somehow nothing reasonable is entering my mind when I think about this, and I think I must be missing an obvious solution. I created a $rownum var that determined how many rows to subdivide in, but then did not really know what to do with it. The code below is a little funny looking since I am still in the middle of thinking about this. In the context of this code, what is the best way to iterate by fives to fill the rows? Any other constructive criticism would also be appreciated.

The relevant chunk:
my $productcount = 0;#index of which product we are using print $q->table({-border=>1}); foreach (@champarray){# go through each item. my @rows; my @tmp_row_items = $q->p($champarray[$productcount][0]);#item 0 i +n array is the name of our item my $itemnum = $#{$champarray[$productcount]}; my $rownum = ceil($itemnum / 5);#ceil is POSIX round up function for my $i (1 .. $itemnum){ push (@tmp_row_items, $q->td($q->textfield( -name => "$champar +ray[$productcount][0]$i", -default => "$champarray[$productcount][$i] +", -size => 25))); } push (@rows, $q->td(@tmp_row_items)); print $q->Tr(\@rows); $productcount++; }