【问题标题】:Store excel data in an array of hashes将excel数据存储在哈希数组中
【发布时间】:2018-02-12 10:05:44
【问题描述】:

我的表结构是:

Name      Address
Deepti    1325 
Cizwan     324
rikita     567

我必须制作像[{Name->deepti,Address->1325},{Name->Cizwan,Address->324},{Name->Rikita,Address->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;

【问题讨论】:

    标签: arrays excel perl hash


    【解决方案1】:

    因此,对于您的结构,您看起来就像一组匿名哈希是您想要的。

    这比你想象的要简单:

    #!/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 } );
    

    这是可行的,因为像这样将值放入{} 会导致它返回一个匿名哈希,然后您可以将其插入到数组中。

    【讨论】:

    • chomp 调用是不必要的。
    • 我必须阅读 excel 表,我只是 perl 的初学者, 是否扮演了这个角色。
    • 是的。我没有你的电子表格,所以&lt;DATA&gt; 假装是一样的。
    • @DeeptiPandey:欢迎来到 Perl 社区。由于您是 Perl 新手,我建议您获取一份“Beginning Perl (by Ovid)”和 Modern Perl (Ebook is available for free)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多