【发布时间】:2014-01-11 05:55:11
【问题描述】:
我觉得我遗漏了一些相当明显的东西,但在文档中找不到任何答案。对使用 Perl 的 OOP 来说仍然是新手,但我使用 Text::CSV 来解析 CSV 以供以后使用。
我将如何提取第一行并将值推送到数组@headers?
这是我目前所拥有的:
#!/usr/bin/perl
use warnings;
use diagnostics;
use strict;
use Fcntl ':flock';
use Text::CSV;
my $csv = Text::CSV->new({ sep_char => ',' });
my $file = "sample.csv";
my @headers; # Column names
open(my $data, '<:encoding(utf8)', $file) or die "Could not open '$file' $!\n";
while (my $line = <$data>) {
chomp $line;
if ($csv->parse($line)) {
my $r = 0; # Increment row counter
my $field_count = $csv->fields(); # Number of fields in row
# While data exists...
while (my $fields = $csv->getline( $data )) {
# Parse row into columns
print "Row ".$r.": \n";
# If row zero, process headers
if($r==0) {
# Add value to @columns array
push(@headers,$fields->[$c]);
} else {
# do stuff with records...
}
}
$r++
}
close $data;
您会认为有一种方法可以引用第一行中的现有字段。
【问题讨论】:
标签: perl csv perl-module