【发布时间】:2014-08-16 08:43:36
【问题描述】:
在执行脚本时,我需要删除数组的多个元素(这些元素不是连续的)。我将在执行脚本时获取我的数组和索引。
例如:
我可能会得到一个数组和索引列表,如下所示:
my @array = qw(one two three four five six seven eight nine);
my @indexes = ( 2, 5, 7 );
我有以下子程序可以做到这一点:
sub splicen {
my $count = 0;
my $array_ref = shift @_;
croak "Not an ARRAY ref $array_ref in $0 \n"
if ref $array_ref ne 'ARRAY';
for (@_) {
my $index = $_ - $count;
splice @{$array_ref}, $index, 1;
$count++;
}
return $array_ref;
}
如果我像下面这样调用我的子程序:
splicen(\@array , @indexes);
这对我有用,但是:
有没有更好的方法来做到这一点?
【问题讨论】:
-
提供示例输入和输出,使问题(和目标)更清晰。如果给定的代码不能产生预期的结果,也要解释一下。