2011-01-27 5 views
2

키가 열 이름을 나타내고 값이 행 내용 인 해시 배열이있는 경우이 테이블을 perl에서 테이블로 출력하는 가장 좋은 방법은 무엇입니까?테이블로 해시의 Perl 출력 배열

+1

일부 샘플 출력을 제공 할 수 있습니까? (힌트 : 한번 해보았 으면 해시 배열로 수행해야하는 것을 의사 코드로 식별 할 수 있습니다. 그런 다음 가지고있는 부분에 대해 * 구체적으로 질문 할 수 있습니다. 어려움.) – Ether

답변

2

각 행의 해시 키가 같은가요? 그것이 당신이 얻을 수있는 구조입니다. 테이블의 일반적으로 이해되는 속성 (즉, 각 행은 동일한 열 세트를 가짐)에 대응하는 DBI로부터. 여기에 내가 생각하고있는 것의 샘플, 난 당신이 무슨 생각을하는지 일치 희망 : 이러한 경우

my @AoH = (
    {id => 1, name => 'Dick'}, 
    {id => 2, name => 'Jane'}, 
); 

당신은 일반적으로 열이 무엇인지 알고있다. 나는 그 가정을 할 것입니다. 여기에 코드가 있습니다 :

my @cols = qw(id name); 
my @AoH;     # as above 

# print the column headings 
print join "\t", @cols; 

# print values for each row using a hash slice 
for my $row_ref (@AoH) { 
    print join "\t", @$row_ref{@cols}; 
} 
1

좋아요?

my @AoH = (
    {a => 1, b => 2}, 
    {c => 3, d => 4}, 
); 

이것은 N 차원 테이블에 매핑됩니다. 여기서 N은 배열의 요소 수입니다. 즉, 해시를 축소하지 않는 한 N = 3 이상으로 시각화 할 수 없습니다. 즉, 큰 해시로 만듭니다.

'역전 된'해시를 표로 만드는 경우이를 단지 조 변경하려면

my %a = (a => 1, b => 1); 

my %b = map { $a{$_} => $_ } keys %a; 

while (my ($k, $v) = each %b) { 
    printf("%s %s\n", $k, $v); 
} 
+1

양자 택일로 :'my % b = reverse % a'. –