Я использую данные CSV, как показано ниже.Я не хочу использовать пользователя и метку времени из CSV-файла.Я могу добавить несколько столбцов или удалить столбцы.
Я не нашел ни одного подходящего метода в Text CSV.Пожалуйста, дайте мне знать, если какой-либо метод или модуль доступен
UniqueId, Name, description, user,timestamp
1,jana,testing,janardar,12-10-2018:00:
sub _filter_common_columns_from_csv{
my $csvfile = shift;
my $CSV = Text::CSV_XS->new(
{
binary => 1,
auto_diag => 3,
allow_quotes => 0,
eol => $/
});
my $_columns ||= do {
open(my $fh, '<', $csvfile) or die $!;
my @cols = @{ $CSV->getline($fh) };
close $fh or die $!;
for (@cols) { s/^\s+//; s/\s+$//; }
\@cols;
};
my @columns = @{ $_columns };
my %deleted;
my @regexes = qw(user timestamp);
foreach my $regex (@regexes) {
foreach my $i (0 .. ($#columns - 1)) {
my $col = $columns[$i];
$deleted{$i} = $col if $col =~ /$regex/;
}
}
my @wanted_columns = grep { !$deleted{$_} } 0 .. $#columns - 1;
my $input_temp = "$ENV{HOME}/output/temp_test.csv";
open my $tem, ">",$input_temp or die "$input_temp: $!";
open(my $fh, '<', $csvfile) or die $!;
while (my $row = $CSV->getline($fh)) {
my @fields = @$row;
$CSV->print($tem, [ @fields[@wanted_columns] ]) or $CSV->error_diag;
}
close $fh or die $!;
close $tem or die $!;
return $input_temp;
}