小编Mal*_*ala的帖子

删除Perl数组中的多个非顺序元素的"最佳"方法是什么?

在执行脚本时,我需要删除数组的多个元素(这些元素不是顺序的).我将在执行脚本时获取我的数组和索引.

例如:

我可能会得到一个数组和索引列表,如下所示:

my @array = qw(one two three four five six seven eight nine);

my @indexes = ( 2, 5, 7 );
Run Code Online (Sandbox Code Playgroud)

我有以下子程序来做到这一点:

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;
}
Run Code Online (Sandbox Code Playgroud)

如果我调用我的子程序如下:

splicen(\@array , @indexes);
Run Code Online (Sandbox Code Playgroud)

这对我有用,但是:

有没有更好的方法来做到这一点?

arrays perl

3
推荐指数
1
解决办法
689
查看次数

标签 统计

arrays ×1

perl ×1