我发现我需要编写一个Perl脚本作为库,因为我所使用的特定格式只有这种语言可用。该脚本读取CSV文件并将数据保存为专有格式。我只需要保存特定列,而不是整个数据集,因此我想到了一种方法,使用以下代码按列名访问列。
my $file = "test.csv";
open my $fh, "<", $file or die "$file: $!";
my $csv = Text::CSV->new ({
binary => 1, # Allow special character. Always set this
auto_diag => 1, # Report irregularities immediately
});
$csv->column_names ($csv->getline ($fh)); # use header
while (my $row = $csv->getline_hr ($fh)) {
print $row->{column_name};
}
在一个 while 循环内,我希望获得一个仅包含我需要列的哈希表,而不是整个记录。我想到可以通过以下方式使用哈希表来实现:
@hash{qw(header_one header_two)}
但在我的情况下,$row
不是哈希而是一个引用(我对此正确吗?),所以我无法完全弄清楚如何实现我所需要的功能。感谢您的帮助!谢谢!