вывод таблицы печати Perl - PullRequest
       7

вывод таблицы печати Perl

2 голосов
/ 30 августа 2011

Я пытаюсь распечатать вывод в табличном формате.

мой сценарий:

use strict;
my @heading=("FN","SN","BP","SUBBN","LgcBT");
my @values=("1","0","Front","Mother Board","MIU");
print "\n\n";
&HEADING;
print "\n";
&VALUES;
print "\n\n";

sub HEADING {
    foreach (@heading) {
        my $lgth1=length($_);
        printf "%3s","| ";
        printf "%${lgth1}s",$_;
    }
}

sub VALUES {
    foreach (@values) {
        my $lgth2=length($_);
        printf "%3s","| ";
        printf "%${lgth2}s",$_;
    }
}

Вывод:

 | FN | SN | BP | **SUBBN** | LgcBT

 | 1 | 0 | Front | **Mother Board** | MIU

Мне нужно напечатать выводтаким образом, что если значение длиннее, чем заголовок, то оно автоматически подстраивает длину курса к значению.

Ответы [ 3 ]

6 голосов
/ 30 августа 2011

Звучит так, как будто вы просто должны использовать Data :: Format :: Pretty :: Console

4 голосов
/ 30 августа 2011

Существует несколько модулей для текстовых таблиц «Pretty-Printing»; мой любимый текст :: ASCIITable .

0 голосов
/ 30 августа 2011

Способ сделать это состоит в том, чтобы сгенерировать массив длины заранее:

my @lengths;
for (0..$#lengths) {
    $lengths[$_] = (length($headers[$_]) > length($values[$_])) ? length($headers[$_]) : length($values[$_])
}

Конечно, есть лучшие способы для генерации @lengths, которые более Perl-иш, но IMHO этот примерлегче всего читать.

...