Решил себя проверить, на что я способен, в плане Perl конечно :)
Задачка в общем-то простая, надо написать функцию которая будет выводить данные в виде таблички, как в консольном-mysql.
Т.е. запускаем функцию так:
write_table(1, 2, "aa", "bb");
и оно напечатает:
+----+----+ | aa | bb | +----+----+
т.е. одна строка, два столбца и инфа для вывода, во всех следующих параметрах..
Вот что у меня получилось:
sub write_table { my ($width, $heigth) = @_; my $data_id = 2; my $border = 0; for (my $i = 0; $i < $heigth; $i++) { # разделители между строками $border = '-' x length($_[$data_id]) . '--'; print '+'; for (my $k = 0; $k < $width; $k++) { print $border . '+'; } print "\n"; # разделители между записями for (my $j = 0; $j < $width; $j++) { print "| "; print $_[$data_id], " "; $data_id++; } print "|"; print "\n"; } my $new_border = \$border; print '+'; for ($k = 0; $k < $width; $k++) { print $$new_border . '+'; } } write_table(2, 2, "aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh", "ii");
Криво конечно, еще не доведено до ума. (если данные разноый длинный, то надо решить как формировать ячейки для них. По максимальному размеру или еще как..
Может быть можно сделать, как-то изящнее, по Perl'овски ?

По Perl'овски -
По Perl'овски - найти в CPAN готовый модуль и написать статью как его использовать :)
А если хочется занять руки делом - улучшить готовый модуль из CPAN, или хотя-бы его хорошенько погонять на реальных данных и написать bugreport/feature request.
Не так:) По
Не так:) По перловски будет воспользоваться форматами.
man perlform
Было лень
Было лень вспоминать форматы :)
А на CPAN действительно есть очень неплохие готовые модули для автоматического рисования ascii табличек, причем настраиваются символы разделителей и тп (внутрь заглядывать тоже было лень, весьма возможно, они как раз форматы и используют).
Насколько я
Насколько я понял, при помощи их можно сделать, если заранее известны параметры таблицы (шаблона).
------------------
use Source();