Hi! I'm working on database plugin for editor vim. I need print data fetched from database to stdout. I write method DBI::st::dump_data(). This peace of code follows. This code can be found (with little modification) also on website: http://platon.sk/cvs/cvs.php/vimconfig/vim/modules/database-client.vim Output produced by this method look like output from standard MySQL client: (output from executed SQL command 'SHOW DATABASES') +----------+ | Database | +----------+ | mysql | | system | | test | +----------+ Can be this method included into DBI Perl module? Have a nice day, Lubomir Host. -----------------------------------%<----------------------------------- package DBI::st; # fetch and print data from _executed_ DBI statement handler sub dump_data ($) { # {{{ my $sth = shift; my $numFields = $sth->{'NUM_OF_FIELDS'}; my $column_names = $sth->{'NAME'}; my $column_sizes = $sth->{'mysql_max_length'}; my $column_is_num = $sth->{'mysql_is_num'}; # build column name's line my $header_names = ""; foreach (my $i = 0; $i < $numFields; $i++) { # numeric columns have smaller length as column name, overwrite ... $$column_sizes[$i] = $$column_sizes[$i] > length($$column_names[$i]) ? $$column_sizes[$i] : ($$column_is_num[$i] ? -1 : 1) * length($$column_names[$i]); # WARN: negative length! - used for right aligment of numbers $header_names .= sprintf("%s%s", $i ? " | " : "| ", $$column_names[$i] . " " x ($$column_sizes[$i] - length($$column_names[$i]))); } $header_names .= " |\n"; # build header separator my $separator = ""; foreach (my $i = 0; $i < $numFields; $i++) { $separator .= "+" . ("-" x (abs($$column_sizes[$i]) + 2)); } $separator .= "+\n"; # the end # print header print $separator; print $header_names; print $separator; # print data while (my @row = $sth->fetchrow_array()) { my $line = ""; foreach (my $i = 0; $i < $numFields; $i++) { $line .= sprintf("%s%s", $i ? " | " : "| ", $$column_sizes[$i] > 0 # usage of negative length ? $row[$i] . " " x ($$column_sizes[$i] - length($row[$i])) : " " x (- $$column_sizes[$i] - length($row[$i])) . $row[$i] ); } print "$line |\n"; } # print footer print $separator; } # }}} -----------------------------------%<----------------------------------- -- Lubomir Host 'rajo' <rajo AT platon.sk> ICQ #: 257322664 Platon Software Development Group http://platon.sk/ http://www.gnu.org/philosophy/no-word-attachments.htmlThread Next