gpt4 book ai didi

perl - 使用Tie::Handle::CSV打印CSV header

转载 作者:行者123 更新时间:2023-12-04 13:45:10 30 4
gpt4 key购买 nike

我使用Tie::Handle::CSV编写了一个perl脚本,以处理csv文件中的一堆数据,并仅将我需要的内容打印到新的csv文件中。现在,我通过硬编码将所有字段名称的标题行打印出来,如下所示:

print '"TERM", "STUDENT ID", "NAME", ..."'."\n";

我怀疑这是一种愚蠢的方法,但是我不知道如何从Tie::Handle::CSV对象中访问 header 。这样实例化,
my $fh = Tie::Handle::CSV->new($file,header=> 1);

这样访问数据,
$line -> {'CATALOG_NBR'}

我知道足够知道这是一个哈希引用,但还不足以知道如何使用此方法而不是对其进行硬编码来打印 header 。显然,在我使脚本每学期再次运行之后,“它们”通常会更改精确的列名和顺序。

非常感谢您的帮助!
JA

最佳答案

如果定义了 header 而不是数组引用,则文档的第一行将用作 header 。可悲的是,没有方法可以像最初那样获得 header ,因此缺少使用header选项将其作为假读取第一行,将其存储(已经是数组引用)并关闭文件并再次重新读取的方法,我没有看到一种更简单的方法。

use strict;
use warnings;
use Tie::Handle::CSV;
use Data::Dumper;

my $csv_fh = Tie::Handle::CSV->new('basic.csv', header => 0);
my $header = <$csv_fh>;
close $csv_fh;
print join(',', @$header), "\n";

$csv_fh = Tie::Handle::CSV->new('basic.csv', header => 1);
while (my $csv_line = <$csv_fh>) {
# $csv_line can be used here
...
}
close $csv_fh;

关于perl - 使用Tie::Handle::CSV打印CSV header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2059075/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com