|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 04 May 2002 12:51:39 To : Vladimir Korablin Subject : Re: рендеринг таблицы -------------------------------------------------------------------------------- Здравствуй, Vladimir Korablin. VK> Есть таблица, содержащаяся в двумерном массиве. Формируется примерно так: VK> =========== begin _Windows Clipboard_ ============= VK> my @table; VK> push @table, [ 1, 2, 3]; VK> push @table, [234, 234, 90]; VK> my @headers; VK> push @headers, ['first', 'second', 'third']; VK> ============ end _Windows Clipboard_ ============== VK> Хочется её красиво отрендерить в текст, чтобы было примерно так: VK> =========== begin _Windows Clipboard_ ============= VK> +-------+--------+-------+ VK> | first | second | third | VK> +-------+--------+-------+ VK> | 1 | 2 | 3 | VK> | 234 | 234 | 90 | VK> +-------+--------+-------+ VK> ============ end _Windows Clipboard_ ============== VK> use what? use what, не знаю. Hо решать умею... ==== 8< [test.pl] ==== #!/usr/bin/perl -w use strict; sub format_table { my ($table, $headers) = @_; my @width; for (my $col = 0; $col < @{$headers->[0]}; $col++) { $width[$col] = length($headers->[0][$col]); for (@$headers,@$table) { $width[$col] = length($_->[$col]) if $width[$col] < length($_->[$col]) } } my $hline = '+-' . join('-+-',map('-' x $_, @width)) . "-+\n"; print $hline; for my $row (@$headers) { print '| ' . join(' | ', map(sprintf("\%-$width[$_]s",$row->[$_]),0..$#width)) . " |\n"; } print $hline; for my $row (@$table) { print '| ' . join(' | ', map(sprintf("\%-$width[$_]s",$row->[$_]),0..$#width)) . " |\n"; } print $hline; } my @table; push @table, [ 1, 2, 3]; push @table, [234, 234, 90]; my @headers; push @headers, ['first', 'second', 'third']; format_table(\@table,\@headers); ==== >8 [test.pl] ==== -- Artem Chuprina Communiware.net RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/358.49, ICQ: 13038757 --- ifmail v.2.15dev5 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/14454d962e7b4.html, оценка из 5, голосов 10
|