# ------------------------------------------------------- # the information is centralized for other uses, such as # printing headers: print ""; foreach my $info ( @COL_INFO ) { # skip hidden fields next if $info->{hide}; # build up opening tag my $header = "{width} ) { $header .= qq| width="$width"|; } $header .= ">"; print( $header . escapeHTML( $info->{title} ) . "\n" ); } print "\n"; # ------------------------------------------------------- # then for each row: while ( my $cur = $sth->fetch() ) { # if necessary, you can construct a hash using # whatever keys you want, not just db column names: my %row; @row{ @COL_NAMES } = @$cur; # or maybe just pick out one value my $foo_id = $cur->[ $COL_INDEX{foo_id} ]; # formatting the output is now easier, too: print qq|\n|; foreach my $info ( @COL_INFO ) { my $cell = "{align}; $cell .= ">"; if ( my $gen = $info->{gen} ) { $cell .= $gen->( $cur ); } else { my $ix = $COL_INDEX{ $info->{name} }; $cell .= escapeHTML( $cur->[$ix] ); } $cell .= "\n"; print $cell; } print "\n"; }