Я обнаружил, что пишу скрипт на 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
- это не хеш, а ссылка (я прав в этом?), Поэтому я не могу понять, как добиться того, что мне нужно. Ценю некоторую помощь! Спасибо!