Во-первых, я бы просто проанализировал файл CSV.
use Text::CSV_XS qw( csv );
$parsed_file_array_of_hashesv = csv(
in => "$input_csv_filename",
sep => ';',
headers => "auto"
); # as array of hash
Во-вторых, когда у вас есть $ parsed_file_array_of_hashesv , теперь вы можете зациклить этот массив в perl и обнаружить строку, которую выхотите удалить из массива.а затем удалите его, используя
, сращивание ARRAY, OFFSET, LENGTH
удаляет что-либо из индекса OFFSET через индекс OFFSET + LENGT
давайте предположим, что индекс 0
my @extracted_array = @$parsed_file_array_of_hashesv; #dereference hashes reference
splice @extracted_array, 0, 1;#remove entry 0
$ref_removed_line_parsed = \@extracted_array; #referece to array
В-третьих, запишите обратно массив в файл CSV
$current_metric_file = csv(
in => $ref_removed_line_parsed, #only accepts referece
out => "$output_csv_filename",
sep => ';',
eol => "\n", # \r, \n, or \r\n or undef
#headers => \@sorted_column_names, #only accepts referece
headers => "auto"
);
Обратите внимание, что если вы используете \ @sorted_column_names, вы сможете контролировать порядок столбцов
my @sorted_column_names;
foreach my $name (sort {lc $a cmp lc $b} keys %{ $parsed_file_array_of_hashesv->[0] }) { #all hashes have the same column names so we choose the first one
push(@sorted_column_names,$name);
}
Это должно записать файл CSV без вашей строки.