2012-01-05 1 views
0

perl 형식과 같은 테이블에서 다음과 같이 표시하는 방법은 무엇입니까?Perl에서 수평선과 다중 선 셀을 사용하여 테이블 그리기

호스트 이름 HostIPs 도메인 이름의 네임 서버의 NSIps

내 데이터가 하나의 행에 대해 다음에 저장됩니다

가 :

$ 호스트 이름, @hostIps는 $ 도메인 명 @nservers는,

hostips, nsservers 및 nsips을 @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 
+2

어떻게이되지 않는다 "길을 표시하는 [당신은] 싶다" ? –

답변

2

그냥 셀 값에 줄 바꿈이 포함

$tb->add($hostName, 
     join("\n", @hostIps), 
     $domainName, 
     join("\n", @nservers), 
     join "\n", @nsips 
     ); 
+0

고마워, 잘됐다! 나는 테이블의 메소드를 추가 할 때 join을 사용할 수 있다는 것을 결코 알지 못했다. – Maxwell

+0

@Maxwell 이런 식으로 ['join'] (http://perldoc.perl.org/functions/join.html)을 사용하는 것은 Perl에서 아주 평범한 것입니다. [Schwartzian transform] (http://google.com/search?q=Swwartzian+transform)이 어떻게 작동하는지 이해할 때까지 기다려주세요. –

+0

@BradGilbert : 필자는 Perl을 처음 사용하기 때문에 배우기까지 시간이 걸릴 것이고, 글을 쓸 때까지 배우지 않을 것이다. 네, 도메인과 하위 도메인 정렬을 구현하려고 할 때 Schwartzian 변형을 보았습니다. 놀랍습니다! – Maxwell

1

, 루프에서 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 
+0

도구 : 표시해야 할 방식으로 원래 게시물을 수정했습니다. host1의 경우 에 ip1,1p2..ipn이 있습니다. 그렇게 표시하려면 어떻게해야합니까? – Maxwell

+0

@Maxwell :'Text :: Table'은 각 호스트가 여러 개의 ips 등을 가지고 있다는 것을 알기에는 충분하지 않다고 생각합니다.하지만 각 호스트에 대해 각 ip를 반복하고 전달할 목록을 작성해야합니다. '추가'합니다. 빈 셀에는 단일 공백을 사용하십시오. – toolic

+1

고마워요. 내가 원했던 것처럼 표시되도록했습니다. – Maxwell