我有一个 Perl 数组,如下所示:
我的@arr = qw(ram sam ham dam yam fam lam cam)
我想使用 splice 从上面的数组中删除 sam 、 yam 和 lam 。 我正在使用下面的代码来做到这一点:
# first getting the index of sam
(my $ind ) = grep {$arr[$_] eq 'sam'} 0 .. $#arr;
splice(@arr, $ind, 1);
我的问题是,由于数组元素已经改变了位置,我需要再次获取 yam 和 lam 的索引并对数组进行拼接。
有没有其他方法可以一次性使用 splice 从数组中删除随机元素。我可以一次获取所有它们的索引并将它们从数组中删除,但这些位置将保留我不想要的 undef 值。
谢谢
如果您知道要删除的元素的值(在本例中为
sam
等),而不是索引,可以这样做
my @filtered_ary = grep { not /\bsam|yam|lam\b/ } @ary;
或者覆盖数组
@ary = grep { ... } @ary
无需先找到索引才能使用
splice
。