【问题标题】:perl csv data embedded in script嵌入在脚本中的 perl csv 数据
【发布时间】:2013-08-06 05:08:46
【问题描述】:

我有一个用于生成文件的 perl 脚本。我想嵌入一个查找表并读入哈希或数组。

例子:

__DATA__
a,0,0x0
p,0,0x8
s,0,0x6
pm,0,0x1fc0
pm,1,0x1f80
pm,2,0x1f00

我已经在使用 Text::CSV 来读取 CSV 文件。如何将数据读入哈希?如果它更容易,我可以添加标题行。

【问题讨论】:

  • 这里的 index/id 列是什么?将其读入哈希是强制性的。否则,也许你的意思是一个哈希数组?

标签: perl csv


【解决方案1】:

直接来自documentation

getline_hr

getline_hr() 和 column_names() 方法一起工作以允许 您将行作为 hashrefs 返回。您必须调用 column_names () 首先声明你的列名。

$csv->column_names (qw( code name price description ));
$hr = $csv->getline_hr ($io);
print "Price for $hr->{name} is $hr->{price} EUR\n";

getline_hr() 如果在 column_names() 之前调用,会发出嘶哑的声音。

getline_hr_all

$arrayref = $csv->getline_hr_all ($io);
$arrayref = $csv->getline_hr_all ($io, $offset);
$arrayref = $csv->getline_hr_all ($io, $offset, $length);

这将返回对 getline_hr ($io) 结果列表的引用。在 此调用,keep_meta_info 被禁用。

【讨论】:

    【解决方案2】:

    特殊文件句柄DATA 指向您的脚本,就在__DATA__ 行之后。如果您需要将其用作子例程或方法的参数,请使用 GLOB sigil:

    subroutine(*DATA);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-06
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 2015-03-15
      • 1970-01-01
      相关资源
      最近更新 更多