Рисование таблицы в Perl с горизонтальными линиями и многострочными ячейками - PullRequest
0 голосов
/ 05 января 2012

Как я могу отобразить следующим образом в табличном формате в perl?

Hostname HostIPs DomainName nameservers NSIps

Мои данные хранятся в следующей строке:

$ hostName, @hostIps, $ domainName, @nservers, @ nsips

hostips, nsservers и nsips являются массивами.Для одного имени хоста - несколько hostIps и для одного домена несколько серверов имен, и я должен отобразить его аккуратно в формате.

Я пытался использовать Text :: Table, но он не отображает, как я хочу.

my $tb = Text::Table->new("hostName", "IP Address", "domainName", "nameServers", "IP  addr");
$tb->add ($hostName, @hostIps, $domainName, @nservers, @nsips);
print $tb;

Какие-нибудь указатели?

Я должен отобразить это как:

hostName IP Address domainName nameServers IP  addr
host1    ip1.1        domain1    serv1.1       addr1.1   
         ip1.2                   serv1.2       addr1.2  
         ip1.3                   serv1.3       addr1.3
host2    ip2        domain2    serv2       addr2 
          ..                      ..       ..
host3    ip3        domain3    serv3       addr3   

Ответы [ 3 ]

2 голосов
/ 05 января 2012

Просто добавьте новые строки в значения ячейки:

$tb->add($hostName,
         join("\n", @hostIps),
         $domainName,
         join("\n", @nservers),
         join "\n", @nsips
        );
1 голос
/ 05 января 2012

Для Text :: Table необходимо add строк в цикле:

use warnings;
use strict;
use Text::Table;

my $tb = Text::Table->new("hostName", "IP Address", "domainName", "nameServers", "IP  addr");
for (1 .. 3) {
    $tb->add("host$_", "ip$_", "domain$_", "serv$_", "addr$_");
}
print $tb;

__END__

hostName IP Address domainName nameServers IP  addr
host1    ip1        domain1    serv1       addr1   
host2    ip2        domain2    serv2       addr2   
host3    ip3        domain3    serv3       addr3   
1 голос
/ 05 января 2012
...