-1

我需要perl方面的帮助,如何编写代码以散列形式获取 csv 文件的输出。 输出应该看起来像一个哈希,不需要为输出创建一个哈希,它可以使用数组来完成,这样我就可以格式化我的输出。

4

1 回答 1

3

使用提供方法getline_hr的Text::CSV。此方法不返回整个 CSV 文件,它只返回行的哈希。如果您想要一个包含整个 csv 的哈希值,如何索引它取决于您。

use Text::CSV;

my $csv = Text::CSV->new;

$csv->column_names( qw/ id col1 col2 / );

while ( not $csv->eof ) {

  my $row = $csv->getline_hr($fh);

  if ( $csv->error_diag ) {
    last if $csv->eof;
    my ( $err, $text ) = $csv->error_diag;
    die $err, $text;
    $csv->SetDiag(0);
    next;
  }

  use Data::Dumper;
  print Dumper $row;

}

您必须将该行添加到哈希数据库中,

my %hashdb;
while ( not $csv->eof ) {

  my $row = $csv->getline_hr($fh);

  $hashdb{$row->{id}} = $row;

   ...
于 2013-02-17T05:41:54.817 回答