You need to pass arguments to your subroutines - iterating through global datastructures by using the post increment operator is bad, bad, bad. Using a simple for loop would be more appropriate, then maybe a map.
As for your request for a subroutine to make a table that has differing numbers of columns, you will need pass the data itself as well as how many columns you want - how about passing an array ref of the data instead? Also, you might want to consider using the 'colspan' attribute to take care of those rows with a lower number of columns.
Here is a snippet to get you started:
UPDATE: there is more than one way to do it ;)use strict; use CGI qw(:standard); use CGI::Pretty; print make_rows( [(1)], [(1..2)], [(1..3)], ); sub make_rows { my $str; for (@_) { $str .= Tr(( map { td($_) } @$_ )); } return $str; }
sub make_rows { @_ = map { Tr((map { td($_) } @$_)) } @_; return wantarray ? @_ : join('',@_); }
jeffa
L-LL-L--L-LL-L--L-LL-L-- -R--R-RR-R--R-RR-R--R-RR B--B--B--B--B--B--B--B-- H---H---H---H---H---H--- (the triplet paradiddle with high-hat)
In reply to (jeffa) Re: Style Questions For Elegant Printing of Tables
by jeffa
in thread Style Questions For Elegant Printing of Tables
by jerrygarciuh
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |