Perl中动态的哈希数组

Sri*_*nan 0 perl perl-module

我有一个这样的CSV文件:

name,email,salary
a,b@b.com,1000
d,e@e.com,2000
Run Code Online (Sandbox Code Playgroud)

现在,我需要将其转换为Perl中的哈希映射数组,所以当我执行以下操作时:

table[1]{"email"}
Run Code Online (Sandbox Code Playgroud)

它返回e@e.com.

我写的代码是:

open(DATA, "<$file") or die "Cannot open the file\n";
    my @table;

    #fetch header line
    $line = <DATA>;
    my @header = split(',',$line);

    #fetch data tuples
    while($line = <DATA>)
    {
        my %map;
        my @row = split(',',$line);
        for($index = 0; $index <= $#header; $index++)
        {
            $map{"$header[$index]"} = $row[$index];
        }
        push(@table, %map);
    }
    close(DATA);
Run Code Online (Sandbox Code Playgroud)

但我没有得到理想的结果..你可以帮忙吗?提前致谢...

che*_*ner 5

这条线

push(@table, %map)
Run Code Online (Sandbox Code Playgroud)

应该

push(@table, \%map)
Run Code Online (Sandbox Code Playgroud)

你想table成为一个哈希引用列表; 您的代码将每个键和值%map作为单独的元素添加到列表中.