我正在编写一个Perl脚本,我知道要删除哪些列以及需要添加哪些列。 e,g我有一个名为deleteColumn
的数组,其中包含要删除的数字列。类似地,我有一个名为AddColumn
的数组,其中包含有关需要插入某些内容的位置的信息。
作为输入,我有一行,其中列以逗号(,)
分隔。例如:
1,2,3,5,9,7,8,12
现在数组deleteColumn中的值是[4,7],这意味着我必须这样做
删除元素9和12.数组AddColumn中的值是[3,5]
这些addColumn表示空加,即','
。所以删除后
并且最后输出应该如下:
1,2,3,,5,,7,8.
我如何实现内联,因为我需要阅读GB的内容 文件(组合大小)并对它们进行操作。这可以内联吗?
我正在逐行阅读文件。
答案 0 :(得分:2)
删除列时,要添加的列的索引可能会更改。因此,在开头标准化索引:按降序对它们进行数字排序,并减少每个索引,以便按照它所遵循的删除列数添加。
#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
my @delete = (4, 7);
my @add = (3, 5);
# Normalize the arrays.
@delete = sort { $b <=> $a } @delete;
@add = sort { $b <=> $a } @add;
for my $i (@delete) {
$_ > $i && --$_ for @add;
}
while (my $line = <>) {
chomp $line;
my @columns = split /,/, $line;
splice @columns, $_, 1 for @delete;
splice @columns, $_, 0, q() for @add;
say join ',', @columns;
}