2017-09-04 10 views
0

の配列内のデータをエクセル:私は[{Name->deepti,Address->1325},{Name->Cizwan,Address->324},{Name->Rikita,Address->567}]Storeは私のテーブル構造があるハッシュ

テーブルのような配列を作成する必要があり

Name  Address 
Deepti 1325 
Cizwan  324 
rikita  567 

ので、複数の行があり、Excelのデータです。 ありがとうございました。私は何かを試みたが、進めることができなかった。

for my $row_num (2..($max_rows)) 
{ 

    if(exists $workbook->{'cell'}[1][1]) 
     { 
      #insert values in the hash 
      $id1 = $workbook->{'cell'}[1][1]; 
      my $val1 = $workbook->{'cell'}[1][$row_num]; 
      #push values in hash 
      push (@{$hash1{$id1}},$val1); 
    } 


    if(exists $workbook->{'cell'}[2][1]) 
     { 
      #insert values in the hash 
    $id2 = $workbook->{'cell'}[2][1]; 
      my $val1 = $workbook->{'cell'}[2][$row_num]; 
    #push values in hash 
    push (@{$hash2{$id2}},$val1); 
    } 

}

print Dumper \%hash1; 
print Dumper \%hash2; 

答えて

0

だからあなたの構造で、あなたは無名ハッシュの配列のように見ていることはあなたが望むものです。

これはあなたが思っているより簡単です:

#!/usr/bin/env perl 

use strict; 
use warnings; 
use Data::Dumper; 

my @rows; 

chomp (my @header = split ' ', <DATA>); 

while (<DATA>) { 
    chomp; 
    my %row; 
    @row{@header} = split; 
    push @rows, \%row; 
} 

print Dumper \@rows; 

__DATA__ 
Name  Address 
Deepti 1325 
Cizwan  324 
rikita  567 


This outputs: 

$VAR1 = [ 
      { 
      'Address' => '1325', 
      'Name' => 'Deepti' 
      }, 
      { 
      'Name' => 'Cizwan', 
      'Address' => '324' 
      }, 
      { 
      'Address' => '567', 
      'Name' => 'rikita' 
      } 
     ]; 

しかし、あなたのコードにそれを当てはめる - あなたがしたいかもしれません:そのような{}に値を置くことにそれを引き起こすので、この作品

push (@rows, { Name => $id2, Address => $val }); 

匿名のハッシュを返し、それを配列に挿入することができます。

+0

'chomp'呼び出しは不要です。 – Borodin

+0

私はExcelシートを読まなければなりません、私はちょうどperlのスターターです、はその役割を果たしています。 –

+0

はい。私はあなたのスプレッドシートを持っていないので、 ' 'は同じようなふりをしています。 – Sobrique

関連する問題