用于哈希的Perl CSV

前端之家收集整理的这篇文章主要介绍了用于哈希的Perl CSV前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个CSV文件,其中包含标题行和数据之前的注释文本,我想将其作为哈希进行进一步操作.主键具有散列将是两个数据值的组合.我如何能?

>使用模式’index’搜索标题
>使用标题
>阅读其余文件.

示例CSV

#
#
#
#
Description information of source of file.

index,label,bit,desc,mnemonic
6,370,11,three,THRE
9,240,23,four,FOR
11,120,n/a,five,FIV

示例所需散列

( '37011' => { 'index' => '6','label' => '370','bit' => '11','desc' => 'three','mnemonic' => 'THRE'},'24023' => {'index' => '9','label'  => '240','bit' => '23','desc' => 'four','mnemonic' => 'FOR'},'120n/a' => {'index' => '11','label'  => '120','bit' => 'n/a','desc' => 'five','mnemonic' => 'FIV'} )

解决方法

你需要 Text::CSV模块:

#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;
use Text::CSV;

my $filename = 'test.csv';

# watch out the encoding!
open(my $fh,'<:utf8',$filename)
    or die "Can't open $filename: $!";

# skip to the header
my $header = '';
while (<$fh>) {
    if (/^index,/x) {
        $header = $_;
        last;
    }
}

my $csv = Text::CSV->new
    or die "Text::CSV error: " . Text::CSV->error_diag;

# define column names    
$csv->parse($header);
$csv->column_names([$csv->fields]);

# parse the rest
while (my $row = $csv->getline_hr($fh)) {
    my $pkey = $row->{label} . $row->{bit};
    print Dumper { $pkey => $row };
}

$csv->eof or $csv->error_diag;
close $fh;

猜你在找的Perl相关文章