如何在现代Perl中使用伪哈希?

问题描述 投票:1回答:1

我已以下一种格式加载了数据(可能是从.csv文件加载的::

my $data =  [
   [ 'id', 'name', 'value' ],
   [   23,  'foo',      77 ],
   [   44,  'bar',   'dfd' ],
]

我想访问以下数据:

$data->[1]{ name }

[我知道在旧的Perl中,我可以使用phash(伪哈希),但是它已被弃用,并由fields编译指示替换。

据我所知,它用于对象。就我而言,我不创建对象也不使用类。

我应该如何在用例中使用fields?请提供示例

perl hash
1个回答
5
投票

使用fields模块读取您的CSV数据,并根据第一行告诉它列名是什么:

Text::CSV_XS

不过,请考虑遍历记录而不是一次读取整个文件。请参阅#!/usr/bin/env perl use strict; use warnings; use feature 'say'; use Text::CSV_XS; my $csv = Text::CSV_XS->new({binary => 1, auto_diag => 1}); $csv->column_names($csv->getline(\*DATA)); my $data = $csv->getline_hr_all(\*DATA); say $data->[0]->{'name'}; # prints foo __DATA__ id,name,value 23,foo,77 44,bar,dfd 的文档以了解几种方法。

© www.soinside.com 2019 - 2024. All rights reserved.