开发者

What is the 'right' way of deleting array elements in Perl?

开发者 https://www.devze.com 2023-01-27 06:35 出处:网络
I have an array containing a set of elements. The order of elements is irrelevant - I use an array since it\'s the simplest data structure I know in Perl.

I have an array containing a set of elements. The order of elements is irrelevant - I use an array since it's the simplest data structure I know in Perl.

my @arr = ...
while (some condition) {
    # iterate over @arr and remove all elements which meet some criteria
    # (which depends on $i)
}

I know of splice() but I think it's not good using it while iterating. delete for array elements seem开发者_Go百科s deprecated. Perhaps use grep on @arr into itself (@arr = grep {...} @arr)?

What is the best practice here?

Perhaps use a hash (although I don't really need it)?


Your idea of using grep is good

@arr = grep { cond($i++); } @arr;


According to the docs, calling delete on array values is deprecated and likely to be removed in a future version of Perl.

Alternatively, you can build a list of needed indices and assign the slice to the original array:

@arr = @arr[ @indices ];

You can read more about slices in perldata.

0

精彩评论

暂无评论...
验证码 换一张
取 消