【发布时间】:2015-03-18 10:31:47
【问题描述】:
我想在 Perl 中创建一个以列标题作为散列键、列值作为散列值的散列。
例如,如果我的 csv 文件有以下数据:
A,B,C,D,E
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15 ...
我想创建一个哈希如下:
A=> 1,6,11
B=>2,7,12
c=>3,8,13 ...
因此,只需使用标题名称,我就可以使用该列值。 PERL 中有没有办法做到这一点?请帮帮我。
我能够使用以下脚本将所需的列值存储为数组
use strict;
use warnings;
open( IN, "sample.csv" ) or die("Unable to open file");
my $wanted_column = "A";
my @cells;
my @colvalues;
my $header = <IN>;
my @column_names = split( ",", $header );
my $extract_col = 0;
for my $header_line (@column_names) {
last if $header_line =~ m/$wanted_column/;
$extract_col++;
}
while ( my $row = <IN> ) {
last unless $row =~ /\S/;
chomp $row;
@cells = split( ",", $row );
push( @colvalues, $cells[$extract_col] );
}
my $sizeofarray = scalar @colvalues;
print "Size of the coulmn= $sizeofarray";
但我想对我的所有专栏都这样做。我猜数组哈希将是最好的解决方案,但我不知道如何实现它。
【问题讨论】:
-
是的,有。到目前为止,您尝试过什么?
-
另外:您确定要标题 -> 列吗?因为您给出的示例,您已经将标题映射到行。
-
抱歉,我编辑了问题。我想要列的标题。感谢您强调它。