Может, не так понял.... Вот это - print "|" . $rows[$i] . "|";
подразумевает вывод псевдографикой? Тогда нечто типа
print '<pre>';
while (@cols = $sth->fetchrow_array) {
print "| ". join(" | ", @cols) ." |\n";
}
print '</pre>';
но надо же еще следить за шириной колонок. Проблема с text/html в том, что в этом случае два или более пробельных символа сжимаются в один пробел. Специально для таких ситуаций и придуман тег <pre>, он сохраняет все пробельные символы.
А вообще, не проще ли это сделать нормальной хтмл`ной табличкой?
print '<html><body><table border="1">';
while (@cols = $sth->fetchrow_array) {
print "<tr><td>". join("</td><td>", @cols) ."</td></tr>\n";
}
print '</table></body></html>';